The subroutine statement defines a program as an external subroutine.
subroutine {(arg.list)} subroutine subroutine.name{(arg.list)}
arg.list | Variables to be assigned by the corresponding call statement. |
subroutine.name | Subroutine to define as external. |
FlashBASIC or BASIC provides the ability to call subroutines. The subroutine statement must appear on the first line of an external subroutine invoked by a call statement.
Arguments defined in the argument list are delimited by , (commas). arg.list must contain the same number of arguments as are in the call statement.
If a subroutine is called from the Update processor, in either a file-defining item, or an attribute-defining item, no arg.list can be specified by the call statement. If called from a file-defining item, the item being filed is automatically passed as a parameter in a call. If called from an attribute-defining item, the current value of the attribute being processed is automatically passed. Note that the subroutine is called once for every value in the attribute.
A subroutine exits with a return statement.
All external subroutines must be cataloged prior to execution.
This example prompts for a date and calls the external subroutine validate.date to make sure the date is legal.
*program main 10 input start.date call validate.date(start.date,ok) if not(ok) then goto 10
Here is the subroutine:
subroutine validate.date(pdate,ok) if pdate matches "1n0n1x1n0n1x2n0n" then if iconv(pdate,’d’) # "" then ok=1 end else ok=0 end end else ok=0 end return
The variable ok is set to 1 if the date is valid. Otherwise, ok is set to 0 (false).