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'.
-JamesThis 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.
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.04
Upgrade:
WebFOCUS 8.2.07
OS:
Linux
Outputs:
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: