Runtime variables

atuldalvi

Member
I am having a procedure which generates excel sheet with the column headings.
When I pass below code to the procedure it works fine and generates a column heading such as Vendor and name.
{gi/data-lst.i vl_SaveData
01 1 1 "Vendor" char
02 1 1 "Name" char }

{gi/data-def.i vl_SaveData}

Now, the problem is that when I pass run time variables to this procedure
it prints those variables name as it is not its value.

example
{gi/data-lst.i vl_SaveData
01 1 1 "Vendor" char
02 1 1 "Name" char
03 1 1 mthdspn char
04 1 1 mthdspno char
}
{gi/data-def.i vl_SaveData}


having output : Vendor Name mthdspn mthdspno

Thanks
 
Without knowing what the include is doing, it's impossible to say for sure, but my guess is that the include is coded to expect a literal string to be used for the headings rather than a variable. Passing a variable name in makes no difference if the include is wrapping it in quotes!

Can you see the source code in the include?
 

atuldalvi

Member
Hi Andrew,
Thanks for ur reply.
below is the include file:

&IF "{177}":U NE "":U &THEN
&MESSAGE ** Maximum number of SaveData sets is 35 per use of gi/data-lst.i
&ENDIF
assign
{1} = {1} + (if {1} ne "":U then ",":U else "":U)

+ "{2}" + ":":U + "{3}" + ":":U + "{4}" + ":":U +
&IF DEFINED(VAR-{2}-{3}-{4}) EQ 0 &THEN
"{5}"
&ELSE
{5}
&ENDIF
+ ":":U + "{6}"
&IF "{7}" NE "":U &THEN
+ ",":U + "{7}" + ":":U + "{8}" + ":":U + "{9}" + ":":U +
&IF DEFINED(VAR-{7}-{8}-{9}) EQ 0 &THEN
"{10}"
&ELSE
{10}
&ENDIF
+ ":":U + "{11}"
&ENDIF
&IF "{12}" NE "":U &THEN
+ ",":U + "{12}" + ":":U + "{13}" + ":":U + "{14}" + ":":U +
&IF DEFINED(VAR-{12}-{13}-{14}) EQ 0 &THEN
"{15}"
&ELSE
{15}
&ENDIF
+ ":":U + "{16}"
&ENDIF
&IF "{17}" NE "":U &THEN
+ ",":U + "{17}" + ":":U + "{18}" + ":":U + "{19}" + ":":U +
&IF DEFINED(VAR-{17}-{18}-{19}) EQ 0 &THEN
"{20}"
&ELSE
{20}
&ENDIF
+ ":":U + "{21}"
&ENDIF
&IF "{22}" NE "":U &THEN
+ ",":U + "{22}" + ":":U + "{23}" + ":":U + "{24}" + ":":U +
&IF DEFINED(VAR-{22}-{23}-{24}) EQ 0 &THEN
"{25}"
&ELSE
{25}
&ENDIF
+ ":":U + "{26}"
&ENDIF
&IF "{27}" NE "":U &THEN
+ ",":U + "{27}" + ":":U + "{28}" + ":":U + "{29}" + ":":U +
&IF DEFINED(VAR-{27}-{28}-{29}) EQ 0 &THEN
"{30}"
&ELSE
{30}
&ENDIF
+ ":":U + "{31}"
&ENDIF
&IF "{32}" NE "":U &THEN
+ ",":U + "{32}" + ":":U + "{33}" + ":":U + "{34}" + ":":U +
&IF DEFINED(VAR-{32}-{33}-{34}) EQ 0 &THEN
"{35}"
&ELSE
{35}
&ENDIF
+ ":":U + "{36}"
&ENDIF
&IF "{37}" NE "":U &THEN
+ ",":U + "{37}" + ":":U + "{38}" + ":":U + "{39}" + ":":U +
&IF DEFINED(VAR-{37}-{38}-{39}) EQ 0 &THEN
"{40}"
&ELSE
{40}
&ENDIF
+ ":":U + "{41}"
&ENDIF
&IF "{42}" NE "":U &THEN
+ ",":U + "{42}" + ":":U + "{43}" + ":":U + "{44}" + ":":U +
&IF DEFINED(VAR-{42}-{43}-{44}) EQ 0 &THEN
"{45}"
&ELSE
{45}
&ENDIF
+ ":":U + "{46}"
&ENDIF
&IF "{47}" NE "":U &THEN
+ ",":U + "{47}" + ":":U + "{48}" + ":":U + "{49}" + ":":U +
&IF DEFINED(VAR-{47}-{48}-{49}) EQ 0 &THEN
"{50}"
&ELSE
{50}
&ENDIF
+ ":":U + "{51}"
&ENDIF
&IF "{52}" NE "":U &THEN
+ ",":U + "{52}" + ":":U + "{53}" + ":":U + "{54}" + ":":U +
&IF DEFINED(VAR-{52}-{53}-{54}) EQ 0 &THEN
"{55}"
&ELSE
{55}
&ENDIF
+ ":":U + "{56}"
&ENDIF
&IF "{57}" NE "":U &THEN
+ ",":U + "{57}" + ":":U + "{58}" + ":":U + "{59}" + ":":U +
&IF DEFINED(VAR-{57}-{58}-{59}) EQ 0 &THEN
"{60}"
&ELSE
{60}
&ENDIF
+ ":":U + "{61}"
&ENDIF
&IF "{62}" NE "":U &THEN
+ ",":U + "{62}" + ":":U + "{63}" + ":":U + "{64}" + ":":U +
&IF DEFINED(VAR-{62}-{63}-{64}) EQ 0 &THEN
"{65}"
&ELSE
{65}
&ENDIF
+ ":":U + "{66}"
&ENDIF
&IF "{67}" NE "":U &THEN
+ ",":U + "{67}" + ":":U + "{68}" + ":":U + "{69}" + ":":U +
&IF DEFINED(VAR-{67}-{68}-{69}) EQ 0 &THEN
"{70}"
&ELSE
{70}
&ENDIF
+ ":":U + "{71}"
&ENDIF
&IF "{72}" NE "":U &THEN
+ ",":U + "{72}" + ":":U + "{73}" + ":":U + "{74}" + ":":U +
&IF DEFINED(VAR-{72}-{73}-{74}) EQ 0 &THEN
"{75}"
&ELSE
{75}
&ENDIF
+ ":":U + "{76}"
&ENDIF
&IF "{77}" NE "":U &THEN
+ ",":U + "{77}" + ":":U + "{78}" + ":":U + "{79}" + ":":U +
&IF DEFINED(VAR-{77}-{78}-{79}) EQ 0 &THEN
"{80}"
&ELSE
{80}
&ENDIF
+ ":":U + "{81}"
&ENDIF
&IF "{82}" NE "":U &THEN
+ ",":U + "{82}" + ":":U + "{83}" + ":":U + "{84}" + ":":U +
&IF DEFINED(VAR-{82}-{83}-{84}) EQ 0 &THEN
"{85}"
&ELSE
{85}
&ENDIF
+ ":":U + "{86}"
&ENDIF
&IF "{87}" NE "":U &THEN
+ ",":U + "{87}" + ":":U + "{88}" + ":":U + "{89}" + ":":U +
&IF DEFINED(VAR-{87}-{88}-{89}) EQ 0 &THEN
"{90}"
&ELSE
{90}
&ENDIF
+ ":":U + "{91}"
&ENDIF
&IF "{92}" NE "":U &THEN
+ ",":U + "{92}" + ":":U + "{93}" + ":":U + "{94}" + ":":U +
&IF DEFINED(VAR-{92}-{93}-{94}) EQ 0 &THEN
"{95}"
&ELSE
{95}
&ENDIF
+ ":":U + "{96}"
&ENDIF
&IF "{97}" NE "":U &THEN
+ ",":U + "{97}" + ":":U + "{98}" + ":":U + "{99}" + ":":U +
&IF DEFINED(VAR-{97}-{98}-{99}) EQ 0 &THEN
"{100}"
&ELSE
{100}
&ENDIF
+ ":":U + "{101}"
&ENDIF
&IF "{102}" NE "":U &THEN
+ ",":U + "{102}" + ":":U + "{103}" + ":":U + "{104}" + ":":U +
&IF DEFINED(VAR-{102}-{103}-{104}) EQ 0 &THEN
"{105}"
&ELSE
{105}
&ENDIF
+ ":":U + "{106}"
&ENDIF
&IF "{107}" NE "":U &THEN
+ ",":U + "{107}" + ":":U + "{108}" + ":":U + "{109}" + ":":U +
&IF DEFINED(VAR-{107}-{108}-{109}) EQ 0 &THEN
"{110}"
&ELSE
{110}
&ENDIF
+ ":":U + "{111}"
&ENDIF
&IF "{112}" NE "":U &THEN
+ ",":U + "{112}" + ":":U + "{113}" + ":":U + "{114}" + ":":U +
&IF DEFINED(VAR-{112}-{113}-{114}) EQ 0 &THEN
"{115}"
&ELSE
{115}
&ENDIF
+ ":":U + "{116}"
&ENDIF
&IF "{117}" NE "":U &THEN
+ ",":U + "{117}" + ":":U + "{118}" + ":":U + "{119}" + ":":U +
&IF DEFINED(VAR-{117}-{118}-{119}) EQ 0 &THEN
"{120}"
&ELSE
{120}
&ENDIF
+ ":":U + "{121}"
&ENDIF
&IF "{122}" NE "":U &THEN
+ ",":U + "{122}" + ":":U + "{123}" + ":":U + "{124}" + ":":U +
&IF DEFINED(VAR-{122}-{123}-{124}) EQ 0 &THEN
"{125}"
&ELSE
{125}
&ENDIF
+ ":":U + "{126}"
&ENDIF
&IF "{127}" NE "":U &THEN
+ ",":U + "{127}" + ":":U + "{128}" + ":":U + "{129}" + ":":U +
&IF DEFINED(VAR-{127}-{128}-{129}) EQ 0 &THEN
"{130}"
&ELSE
{130}
&ENDIF
+ ":":U + "{131}"
&ENDIF
&IF "{132}" NE "":U &THEN
+ ",":U + "{132}" + ":":U + "{133}" + ":":U + "{134}" + ":":U +
&IF DEFINED(VAR-{132}-{133}-{134}) EQ 0 &THEN
"{135}"
&ELSE
{135}
&ENDIF
+ ":":U + "{136}"
&ENDIF
&IF "{137}" NE "":U &THEN
+ ",":U + "{137}" + ":":U + "{138}" + ":":U + "{139}" + ":":U +
&IF DEFINED(VAR-{137}-{138}-{139}) EQ 0 &THEN
"{140}"
&ELSE
{140}
&ENDIF
+ ":":U + "{141}"
&ENDIF
&IF "{142}" NE "":U &THEN
+ ",":U + "{142}" + ":":U + "{143}" + ":":U + "{144}" + ":":U +
&IF DEFINED(VAR-{142}-{143}-{144}) EQ 0 &THEN
"{145}"
&ELSE
{145}
&ENDIF
+ ":":U + "{146}"
&ENDIF
&IF "{147}" NE "":U &THEN
+ ",":U + "{147}" + ":":U + "{148}" + ":":U + "{149}" + ":":U +
&IF DEFINED(VAR-{147}-{148}-{149}) EQ 0 &THEN
"{150}"
&ELSE
{150}
&ENDIF
+ ":":U + "{151}"
&ENDIF
&IF "{152}" NE "":U &THEN
+ ",":U + "{152}" + ":":U + "{153}" + ":":U + "{154}" + ":":U +
&IF DEFINED(VAR-{152}-{153}-{154}) EQ 0 &THEN
"{155}"
&ELSE
{155}
&ENDIF
+ ":":U + "{156}"
&ENDIF
&IF "{157}" NE "":U &THEN
+ ",":U + "{157}" + ":":U + "{158}" + ":":U + "{159}" + ":":U +
&IF DEFINED(VAR-{157}-{158}-{159}) EQ 0 &THEN
"{160}"
&ELSE
{160}
&ENDIF
+ ":":U + "{161}"
&ENDIF
&IF "{162}" NE "":U &THEN
+ ",":U + "{162}" + ":":U + "{163}" + ":":U + "{164}" + ":":U +
&IF DEFINED(VAR-{162}-{163}-{164}) EQ 0 &THEN
"{165}"
&ELSE
{165}
&ENDIF
+ ":":U + "{166}"
&ENDIF
&IF "{167}" NE "":U &THEN
+ ",":U + "{167}" + ":":U + "{168}" + ":":U + "{169}" + ":":U +
&IF DEFINED(VAR-{167}-{168}-{169}) EQ 0 &THEN
"{170}"
&ELSE
{170}
&ENDIF
+ ":":U + "{171}"
&ENDIF
&IF "{172}" NE "":U &THEN
+ ",":U + "{172}" + ":":U + "{173}" + ":":U + "{174}" + ":":U +
&IF DEFINED(VAR-{172}-{173}-{174}) EQ 0 &THEN
"{175}"
&ELSE
{175}
&ENDIF
+ ":":U + "{176}"
&ENDIF

Can u tell me please what is the meaning of all these statements and how to tackle this type of situation ?

Thanx
 
It would appear you're in luck! The include file is arranged in such a way that you CAN use a variable for the heading text, but it's very prescriptive and you'll have to use their convention for naming things. Personally, I would never have done this with include files...

So, looking at this construction...

Code:
{1} = {1} + (if {1} ne "":U then ",":U else "":U)
 
+ "{2}" + ":":U + "{3}" + ":":U + "{4}" + ":":U +
&IF DEFINED(VAR-{2}-{3}-{4}) EQ 0 &THEN
"{5}"
&ELSE
{5}
&ENDIF

...the include is using quotes around the fifth include parameter, or not, based on the result of &IF DEFINED(). You want the statement WITHOUT the quotes to be compiled into your code, so when using the include you can do this:


Code:
&SCOPED-DEFINE var-03-1-1 YES.
&SCOPED-DEFINE var-04-1-1 YES.
 
{gi/data-lst.i vl_SaveData
01 1 1 "Vendor" char 
02 1 1 "Name" char
03 1 1 mthdspn char
04 1 1 mthdspno char
}

The preprocessors are basically saying "use the value in the variable for entries 03 and 04", instead of just quoting whatever you use.

So, just add these two preprocessor definitions before your include file, and you should be away.
 

atuldalvi

Member
Hi Andrew,.
Thanx for ur reply
I tried this but it didn't work.
Can you show me an example of what you are talking about & how it will work ?

Thanx.
 
Hi there.

I gave you an example. Here it is again:

Code:
&SCOPED-DEFINE var-03-1-1 YES.
&SCOPED-DEFINE var-04-1-1 YES.
 
{gi/data-lst.i vl_SaveData
01 1 1 "Vendor" char 
02 1 1 "Name" char
03 1 1 mthdspn char
04 1 1 mthdspno char
}

When you say "it didn't work", what actually happened? Any error messages?
 

atuldalvi

Member
I m trying to display those values in the .i file
like this:

DISP "{3}" "{4}".

It is showing variable name as it is not it's value.
 
That won't work - you've put the quotes in! So you're just displaying a quoted string!

This...

Code:
DISP "{3}" "{4}".
...needs to be this....

Code:
DISP {3} {4}.

Have you tried adding the &SCOPED-DEFINEs in?
 
Top