Global Local

From Macros Wiki
Jump to: navigation, search
!    show the use of local and global variables and
!    the passing of arguments to sub macros
 
!    it also creates a file with the results and
!    then displays them when it has finished
 
a1$ = "This macro shows the use of local and global variables"
a2$ = "and the passing of arguments to other macros"
 
message "%a1$\n%a2$"
 
global inum, iunit, a1$, a2$, a3$, a4$
local i, result
 
!    open a file for the results
!    ---------------------------
 
errmac$ = "GlobalLocal_FileError.mac"
 
file_open 1, "temp.txt", write
if FileError <> 0 then call errmac$, "Error opening file for read", 0
 
inum = 4
 
for i = 2 to inum
a1$ = "Call Sub Macro, i = "
a2$ = format$(i,"#0")


file_write_text 1, a1$+a2$
if FileError <> 0 then call errmac$, "Error writing file", 1


call "GlobalLocal_Sub.mac", i, result
if FileError <> 0 then call errmac$, "Error writing file", 1


a1$ = "Back in main Macro, i = "
a2$ = format$(i,"#0")
a3$ = " result = "
a4$ = format$(result, "###0")


file_write_text 1, a1$+a2$+a3$+a4$
if FileError <> 0 then call errmac$, "Error writing file", 1

next i

 
file_close 1
if FileError <> 0 then call errmac$, "Error closing file", 0
 
file_is_open = 0
 
!    reopen the file and read the contents
!    -------------------------------------
 
file_open 1, "temp.txt", read
if FileError <> 0 then call errmac$, "Error re-opening file", 0
 
file_is_open = 1
 
a1$ = ""
inum = 0
 
:read
file_read_text 1, a2$
if FileError <> 0 then goto close  !    end of file
 
a1$ = a1$+a2$+"\n"
 
inum = inum + 1
if inum < 20 then goto read  !    read a max of 20 lines
 
:close
file_close 1
if FileError <> 0 then call errmac$, "Error closing file", 0
 
file_is_open = 0
 
!    delete the temp file
!    --------------------
 
file_delete "temp.txt"
if FileError <> 0 then call errmac$, "Error deleting file", 0
 
message a1$, "Results"