In the discussion of BASIC, various "improved" BASICs have been
mentioned, on various 1980's microcomputer platforms, leaving the
impression perhaps that the improvements to BASIC were a phenomenon
of that period and arena.
The BASIC on the Microdata-REALITY system had many of these
improvements back in the mid-70's, on a professional/business/mini-
computer platform: structured if-then-else, statement numbers are
optional, indentable, etc. Below is a code snippet from a program I
wrote in 1977/8 (the numbers on the far left are line numbers, not
part of the source).
There was also a 'LOOP-statement-WHILE/UNTIL-condition-DO-statement-
REPEAT' facility.
I don't remember whether procedures/subroutines were provided for or
not. This was a compiled BASIC as I recall.
So when did the structuring of BASIC begin? Are there earlier
examples? Was the 'official' language definition improved or were
they all independent developments?
========
I started out with basic BASIC on an HP9830 in 1976, although at the
same time I was exposed to 8080/Z80 machine and assembly language.
A couple years later in 1st-year university the prof declared at the
beginning of the year we would be learning ALGOL. I had the
impertinence to ask him why we wouldn't be using BASIC. He had a very
short answer for me. I soon saw the light.
=========
58 ***********************
59 * PRINTING LOOPS
60 300 PRINTER ON
61 LL(1)=PN; LL(2)=FN
62 FOR P=1 TO P2
63 IF P=1 THEN H='(PROGRAMS)'; NP=2 ELSE H='(FILES) ';
NP=1
64 PGE=0; LNE=0
65 *
66 FOR LC(1)=1 TO LL(P)
67 *
68 DA=''; M=0
69 FOR LC(2)=1 TO LL(NP)
70 IF EXTRACT(FA,2,LC(NP),LC(P)+1)=1 THEN M=M+1;
DA=INSERT(DA,M,0,0EXTRACT(FA,NP,LC(2),1))
71 NEXT LC(2)
72 *
73 M=INT(M/2+0.5)
74 LNE=LNE+M
75 IF LNE>60 OR PGE=0 THEN
76 PGE=PGE+1; LNE=M+3
77 PRINT PC
78 PRINT 'PROGRAM - FILE CROSS REFERENCE':SPACE
(29):TIMEDATE()[11,11]
79 PRINT H:SPACE(55):'PAGE ':PGE L2
80 END
81 *
82 PRINT U; PRINT; LNE=LNE+3
83 T=EXTRACT(FA,P,LC(1),1):':'
84 PRINT T L22:S3:
85 FOR D=1 TO M
86 PRINT EXTRACT(DA,D,0,0) L22:S3:EXTRACT(DA,M+D,0,0)
L22
87 PRINT S25:
88 NEXT D
89 PRINT
90 IF M=0 THEN PRINT
91 *
92 NEXT LC(1)
93 NEXT P
94 STOP
95 ***********************
96 * ERROR MESSAGE
97 900 PRINT; PRINT "ERROR ":ERR:" HAS OCCURRED IN PROGRAM
'X'"
98 END