Focal Point
[CLOSED] limiting scope of &vars

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/998104953

February 02, 2010, 12:41 PM
jbmuir
[CLOSED] limiting scope of &vars
Hi All,

Just wondering if there is a way in WebFOCUS other than by using "EX" to limit the scope of an amper variable.

I'd like to limit the scope of variables created within a fex (call it FOO) that is -INCLUDEd in several places. I know I can use "EX FOO" to limit the scope but I'm hoping that maybe there is something new in the language I don't know about. I imagine something cool like the BLOCKBEGIN and BLOCKEND labels in this pseudocode below:

-SET &MOUSE = 'Mickey';
-* define new scope here with BLOCKBEGIN.
-BLOCKBEGIN
-SET &MOUSE = 'Minnie';
-* end scope here with BLOCKEND.
-BLOCKEND
-TYPE &MOUSE

and lo and behold the value of &MOUSE would be 'Mickey'.

-James

This message has been edited. Last edited by: Kerry,


WF 7.1.6 moving to WF 7.7, Solaris 10, HTML,PDF,XL
February 02, 2010, 12:56 PM
Francis Mariani
That's not possible with WebFOCUS. However this is:

-SET &MOUSE = 'Mickey';
-* define new scope here with BLOCKBEGIN.
-BLOCKBEGIN
-SET &MOUSE_SAVE = &MOUSE;
-SET &MOUSE = 'Minnie';
-* end scope here with BLOCKEND.
-BLOCKEND
-SET &MOUSE = &MOUSE_SAVE;
-TYPE &MOUSE



Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
February 02, 2010, 01:00 PM
Darin Lee
So what is it you are trying to accomplish with all the stuff in the middle?
With -SET &MOUSE='Mickey'; you get the value of &MOUSE to be Mickey. I guess I'm not quite sure what you mean by "limiting the scope of variables" or why you are needing to EX FOO.
Can you give an example and explanation of how you are trying to use this?


Regards,

Darin



In FOCUS since 1991
WF Server: 7.7.04 on Linux and Z/OS, ReportCaster, Self-Service, MRE, Java, Flex
Data: DB2/UDB, Adabas, SQL Server Output: HTML,PDF,EXL2K/07, PS, AHTML, Flex
WF Client: 77 on Linux w/Tomcat
February 02, 2010, 02:39 PM
jbmuir
Francis, Thanks for confirming what I thought would be the case.

Darin, The scope of a variable determines where you can access the variable in your code. The wikipedia has an explanation for local variable scope.

http://en.wikipedia.org/wiki/Local_variable

I was hoping that there might be an enhancement to the dialog manager that supported local scope but no such luck.

-James


WF 7.1.6 moving to WF 7.7, Solaris 10, HTML,PDF,XL
February 02, 2010, 03:53 PM
Waz
Another variation on Francis' solution would be indexing the variables.

[CODE-*new file
-SET &Level = 'Top' ;
-SET &MOUSE.&Level = 'Mickey';
-* define new scope here with BLOCKBEGIN.
-BLOCKBEGIN
-SET &Level = 'Inner' ;
-SET &MOUSE.&Level = 'Minnie';
-* end scope here with BLOCKEND.
-BLOCKEND
-SET &Level = 'Top' ;
-TYPE &MOUSE.&Level[/CODE]


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

February 02, 2010, 05:21 PM
Dan Satchell
As you've seen from earlier posts, there are a number of ways to deal with this issue. If your variable will have a limited number of values, another approach is to use the values as labels in your -INCLUDEd focexec:

-DEFAULT &MOUSE = 'Mickey'
-GOTO &MOUSE
-*
-Mickey
.
.
-EXIT
-*
-Minnie
.
.
-EXIT
-*
etc....

This message has been edited. Last edited by: Dan Satchell,


WebFOCUS 7.7.05
February 05, 2010, 02:24 PM
jbmuir
[CLOSED]


WF 7.1.6 moving to WF 7.7, Solaris 10, HTML,PDF,XL