DataBasic Real-time Run Program Example
This program allows you to enter simple DataBasic programs directly and run them without having to type file, compile and run commands.
Programs can be as simple as a one-line PRINT statement or can be of multiple lines. The program is useful for doing various math routines and for trying out certain DataBasic statements and sequences.
BC
******************************************************************
***** DataBasic REAL-TIME RUN PROGRAM *****
******************************************************************
***** FILE 'BIN' MUST BE CREATED BEFORE RUNNING *****
******************************************************************
DIM ATTR(100)
PROMPT CHAR(216)
EQU NILL TO ""
NEW=""
******************************************************************
***** PROMPT FOR INPUT, LOOP UNTIL NO INPUT *****
******************************************************************
OPEN 'BIN' TO FILE ELSE
PRINT "NO 'BIN' FILE"
STOP
END
START: MAT ATTR=NILL
L=1
IF NEW#"" THEN WHAT=NEW; GO LUUP2
LUUP: INPUT WHAT
LUUP2: BEGIN CASE
CASE WHAT=NILL; GO ONWD ;* End Program
CASE WHAT[1,1]="," ;* Transpose ,stmnt
* to PRINT stmnt
IF WHAT[2,1]=" " THEN ;* Transpose , stmnt
* to PRINT stmnt
ATTR(L)="PRINT":WHAT[2,-1]
END ELSE ATTR(L)="PRINT ":WHAT[2,-1]
GO SKIP
CASE WHAT[1,1]="'" ;* Transpose 'stmnt
* to PRINT "stmnt"
ATTR(L)='PRINT "':WHAT[2,-1]:'"'
GO SKIP
END CASE
ATTR(L)=WHAT ;* Input is verbatim
SKIP: L=L+1 ;* Incr to next attr.
GO LUUP ;* Loop back
******************************************************************
***** FILE LISTING, COMPILE, RUN & DELETE IT *****
******************************************************************
*
ONWD: ATTR(L)="END"
IF L=1 THEN STOP
MATWRITE ATTR ON FILE,'ITEM' ;* File source code
* Compile it
PERFORM "BASIC BIN ITEM" CAPTURING ERRM
ITEM="$ITEM"
READV EMTX FROM FILE,ITEM,1 ELSE GO NONE
GO RNIT
NONE: PRINT NILL; PRINT ERRM
PRINT NILL; L=1; GO LUUP
RNIT: PRINT @(-10):@(-4)
PRINT @(-4); PRINT NILL
PERFORM "RUN BIN ITEM" ;* RUN program
CLEARFILE FILE ;* Burn the evidence
INPUT NEW
IF NUM(NEW) THEN
IF NEW>1 THEN
L=NEW; NEW=""; GO LUUP
END ELSE
IF NEW="" THEN STOP ELSE GO START
END ELSE GO START
END
END