Good point Glenn,
Any programming language that supports constructs which allow the
development of loops and subroutines that do not need GOTO's can be used to
create structured programs. Another hallmark of structured programs is the
usage of text labels instead of numeric.
So, GOSUB DETERMINE.PREVIOUS.STATUS
can be used instead of GOSUB 17250...
Keeping logical constructs separate from 'doing stuff' is another good
practice, as is parsing all variables after the READ, having only one main
print routine (if printing), keeping subroutines from getting too big, not
going down too many levels in subroutines, the list goes on and on. I have
been told that my basic programs look more like structured COBOL programs
than most basic programs. And it's pretty true.
I agree that
OPEN '', ITEM.MASTER TO 'ITEM.MASTER' ELSE GOTO ABORT.ROUTINE
is allowable! And remember, it's not GOTO's that kill, it's the person
pulling the trigger!!! ;-) (Or would that be the person hitting the return
key?!!?)
This is an example from one of my programs that is used to create the demand
file prior to sending the data to a 3rd party forecasting system "Demand
Solutions". As you can see, it is quite easy to create structured code in
BASIC!
MAIN.SETUP.SECTION:*
GOSUB OPEN.AND.INIT
GOSUB SELECT.DEMAND.MAPS
IF NOT(ERROR) THEN
GOSUB MAIN.PROCESSING.LOOP
END
GOSUB FINISH.UP
END.MAIN.SETUP.SECTION:*
STOP
MAIN.PROCESSING.LOOP:*
LOOP
READNEXT TM.ID FROM 1 ELSE EXIT
GOSUB READ.DEMAND.MAP
IF ERROR THEN CONTINUE
GOSUB PREPROCESS.PURGE
IF ERROR THEN CONTINUE
IF (FILE.SOURCE = 1 OR FILE.SOURCE = 3) THEN
*Process SA file for file opts 1 and 3
FILE.HANDLE = SA
FILE.SELECT = 'SA'
GOSUB SELECT.SA
IF ERROR THEN CONTINUE
GOSUB PROCESS.SA
END
IF (FILE.SOURCE = 2 OR FILE.SOURCE = 3) THEN
*Process SA.HIST file for file opts 2 and 3
FILE.HANDLE = SA.HIST
FILE.SELECT = 'SA.HIST'
GOSUB SELECT.SA
IF ERROR THEN CONTINUE
GOSUB PROCESS.SA
END
MSG=''
GOSUB OUTPUT.LINE
MSG='End of Listing for Demand Map ':MAP.NAME:', ':DESC
GOSUB OUTPUT.LINE
REPEAT
RETURN
Allen E. Elwood
Senior Programmer Analyst
Curnayn and Associates
Direct (818) 361-5251
Fax (818) 361-5251
Cell (818) 800-5595
Home (818) 361-7217
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of Glenn Herbert
Sent: Thursday, June 17, 2004 12:01 PM
To: [EMAIL PROTECTED]
Subject: RE: [U2] [UV] WHILE READNEXT id DO
Is BASIC structured? :-p
If your answer is yes, then the GOTO should probably not be allowed (except
in rare cases).
If your answer is no, then GOTO away!! (caveat: if not abused!)
As Yoda says: GOTO is the evil not; incorrect the usage is!
At 02:46 PM 6/17/2004, you wrote:
>You realize this does not conform to the ANSI structured programming
>principles? I have a version dated 1982 and goto's are not allowed...
>
>Or was this just a joke? In which case you certainly got me! :-)
>
>-----Original Message-----
>From: [EMAIL PROTECTED]
>[mailto:[EMAIL PROTECTED] Behalf Of Simon Lewington
>Sent: Thursday, June 17, 2004 11:02 AM
>To: [EMAIL PROTECTED]
>Subject: Re: [U2] [UV] WHILE READNEXT id DO
>
>
><[EMAIL PROTECTED]> ...
> > LOOP
> > code
> > WHILE READNEXT id DO
> > more code
> > REPEAT
>
>I prefer:
>
>100
>[code]
>GOTO 300
>200
>[more code]
>GOTO 100
>300
>READNEXT ID THEN GOTO 200
>-------
>u2-users mailing list
>[EMAIL PROTECTED]
>To unsubscribe please visit http://listserver.u2ug.org/
>-------
>u2-users mailing list
>[EMAIL PROTECTED]
>To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/