[Date Prev][Date Next][Thread Prev][Thread Next]
[Author Index] [Date Index] [Thread Index]
[SQR-USERS Info] [SQRUG Home Page]

Local Variable Surprise



Having a VB and C background, it is my preference in life to pass as
many variables as possible as parameters between procedures.  I have
been working with an SQR that is calling multiple levels of procedures
similar to the following:

begin-procedure proc1
        do Proc2 (#OK)
        if #OK = 1
                !  do some processing here
        else
                !  Write error messages
        end-if
end-procedure

begin-procedure proc2(:#Valid)
        let #Valid = 1   ! setting this procedure to have a valid return code
        do Proc3(#Valid)

        ! expecting the value of #Valid to be 0 at this point
        show 'Proc2 = ' #Valid
end-procedure

begin-procedure proc3(:#Valid)
        let #Valid = 0   ! setting this procedure to have an invalid return
code
        show 'Proc3 = ' #Valid
end-procedure

In this example I was expecting to perform error processing when finally
getting back up to Proc1.  I was quite surprised to find that Proc1 was
acting like the return code (#OK) was valid.  When checking the log I
found the following:

Proc3 = 0
Proc2 = 1

I was expecting the "Do Proc3(#Valid)" process to get a return value of
0 then pass that value to Proc1.

This E-mail is meant to both share information and to request a
reasonable explanation as to why this is happening?

Thanks

Paul