<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Thema "Re: Globale Variable abfragen - nicht (!) innerhalb eines Makros" in CoDe SAS German</title>
    <link>https://communities.sas.com/t5/CoDe-SAS-German/Globale-Variable-abfragen-nicht-innerhalb-eines-Makros/m-p/253753#M1960</link>
    <description>&lt;P&gt;Hallo Herr Müller,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ich sehe da kein Problem.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Was genau funktioniert denn bei Ihnen in diesem Ablauf nicht?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Viele Grüße&lt;/P&gt;
&lt;P&gt;Michael&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Edit: Anmerkung&lt;/P&gt;
&lt;P&gt;Wie &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/32733"&gt;@FreelanceReinh﻿&lt;/a&gt; schon angemerkt hat, kann das mit den Anführungszeichen zu Verwirrung führen.&lt;/P&gt;
&lt;P&gt;%let flag = 'irgendwas'; speichert auch die Hochkommas in der Macro-Variablen.&lt;/P&gt;
&lt;P&gt;Andererseits führt ein&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ergebnis;
set eingang;
if &amp;amp;flag. eq irgendwas [...]
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;dazu, dass im Data Step (Program Data Vector) eine neue Variable mit Namen irgendwas angelegt wird.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Daher bietet es sich vielleicht an, das Ganze mit einem "Pseudo-Boolean" abzufangen:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let flag = 1;
 
data ergebnis;
     set eingang;
     if &amp;amp;flag. then a = 2*a;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Achtung: Die Variable flag ist und bleibt ein String, allerdings kann SAS damit umgehen und die Abfrage "if 1 then .." ist wahr, "if 0 then..." wäre falsch.&lt;/P&gt;
&lt;P&gt;Wenn man dann die Variable umbenennt wird das recht einfach lesbar, z.B. "if &amp;amp;flag_gesetzt. then ..."&lt;/P&gt;</description>
    <pubDate>Wed, 02 Mar 2016 13:06:27 GMT</pubDate>
    <dc:creator>mfab</dc:creator>
    <dc:date>2016-03-02T13:06:27Z</dc:date>
    <item>
      <title>Globale Variable abfragen - nicht (!) innerhalb eines Makros</title>
      <link>https://communities.sas.com/t5/CoDe-SAS-German/Globale-Variable-abfragen-nicht-innerhalb-eines-Makros/m-p/253749#M1958</link>
      <description>&lt;P&gt;Hallo zusammen,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ich würde gerne mittels eines "globalen Schalters" einen Ablauf innerhalb eines Data-Schritts steuern.&lt;/P&gt;
&lt;P&gt;Den Data-Schritt möchte ich nicht extra in ein Makro packen.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Meine Vorstellung ist:&lt;/P&gt;
&lt;P&gt;---------------------8&amp;lt;----------------------------&lt;/P&gt;
&lt;P&gt;* Globale Variable;&lt;/P&gt;
&lt;P&gt;%let flag = 'ja';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;* Aufbereitungsschritt;&lt;/P&gt;
&lt;P&gt;data aufbereitet;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;set rohdaten;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if &amp;amp;flag. eq 'ja' then vorhandene_numvar = 2*vorhandene_numvar;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;---------------------&amp;gt;8----------------------------&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Was aber mangels einer Makro-Umgebung für den Data-Schritt nicht geht.&lt;/P&gt;
&lt;P&gt;Gibt es hier Möglichkeiten?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Beste Grüße&lt;/P&gt;
&lt;P&gt;Wolfgang Müller&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Mar 2016 11:22:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/CoDe-SAS-German/Globale-Variable-abfragen-nicht-innerhalb-eines-Makros/m-p/253749#M1958</guid>
      <dc:creator>wmueller</dc:creator>
      <dc:date>2016-03-02T11:22:09Z</dc:date>
    </item>
    <item>
      <title>Re: Globale Variable abfragen - nicht (!) innerhalb eines Makros</title>
      <link>https://communities.sas.com/t5/CoDe-SAS-German/Globale-Variable-abfragen-nicht-innerhalb-eines-Makros/m-p/253751#M1959</link>
      <description>&lt;P&gt;Hallo, Herr Müller,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ich würde die Anführungszeichen in der Makrovariablendefinition weglassen und dafür doppelte Anführungszeichen um die Makrovariablenreferenz im "Data-Schritt" einfügen.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Beispiel:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let flag = ja;

data _null_;
if "&amp;amp;flag"='ja' then put 'OK';
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Edit:&amp;nbsp;Wie&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/6453"&gt;@mfab﻿&lt;/a&gt;&amp;nbsp;richtigerweise&amp;nbsp;angemerkt hat, funktioniert Ihr Code auch ohne Änderung. Falls die Makrovariable aber vielleicht doch einmal in einem Makro zum Einsatz kommt, könnten die Anführungszeichen im Variablenwert lästig sein: Bei %IF-Abfragen müsste man darauf achten, die richtigen Anführungszeichen zu verwenden (&lt;FONT face="courier new,courier"&gt;%if &amp;amp;flag="ja"&lt;/FONT&gt; ... würde nicht funktionieren), &lt;FONT face="courier new,courier"&gt;%length(&amp;amp;flag)=4&lt;/FONT&gt;&amp;nbsp;und erst recht &lt;FONT face="courier new,courier"&gt;%sysfunc(length(&amp;amp;flag))=4&lt;/FONT&gt;&amp;nbsp;wären&amp;nbsp;kontraintuitiv, ...&lt;/P&gt;</description>
      <pubDate>Wed, 02 Mar 2016 12:04:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/CoDe-SAS-German/Globale-Variable-abfragen-nicht-innerhalb-eines-Makros/m-p/253751#M1959</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2016-03-02T12:04:44Z</dc:date>
    </item>
    <item>
      <title>Re: Globale Variable abfragen - nicht (!) innerhalb eines Makros</title>
      <link>https://communities.sas.com/t5/CoDe-SAS-German/Globale-Variable-abfragen-nicht-innerhalb-eines-Makros/m-p/253753#M1960</link>
      <description>&lt;P&gt;Hallo Herr Müller,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ich sehe da kein Problem.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Was genau funktioniert denn bei Ihnen in diesem Ablauf nicht?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Viele Grüße&lt;/P&gt;
&lt;P&gt;Michael&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Edit: Anmerkung&lt;/P&gt;
&lt;P&gt;Wie &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/32733"&gt;@FreelanceReinh﻿&lt;/a&gt; schon angemerkt hat, kann das mit den Anführungszeichen zu Verwirrung führen.&lt;/P&gt;
&lt;P&gt;%let flag = 'irgendwas'; speichert auch die Hochkommas in der Macro-Variablen.&lt;/P&gt;
&lt;P&gt;Andererseits führt ein&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ergebnis;
set eingang;
if &amp;amp;flag. eq irgendwas [...]
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;dazu, dass im Data Step (Program Data Vector) eine neue Variable mit Namen irgendwas angelegt wird.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Daher bietet es sich vielleicht an, das Ganze mit einem "Pseudo-Boolean" abzufangen:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let flag = 1;
 
data ergebnis;
     set eingang;
     if &amp;amp;flag. then a = 2*a;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Achtung: Die Variable flag ist und bleibt ein String, allerdings kann SAS damit umgehen und die Abfrage "if 1 then .." ist wahr, "if 0 then..." wäre falsch.&lt;/P&gt;
&lt;P&gt;Wenn man dann die Variable umbenennt wird das recht einfach lesbar, z.B. "if &amp;amp;flag_gesetzt. then ..."&lt;/P&gt;</description>
      <pubDate>Wed, 02 Mar 2016 13:06:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/CoDe-SAS-German/Globale-Variable-abfragen-nicht-innerhalb-eines-Makros/m-p/253753#M1960</guid>
      <dc:creator>mfab</dc:creator>
      <dc:date>2016-03-02T13:06:27Z</dc:date>
    </item>
    <item>
      <title>Re: Globale Variable abfragen - nicht (!) innerhalb eines Makros</title>
      <link>https://communities.sas.com/t5/CoDe-SAS-German/Globale-Variable-abfragen-nicht-innerhalb-eines-Makros/m-p/253754#M1961</link>
      <description>&lt;P&gt;Hallo Herr&amp;nbsp;Müller,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;vielleicht hilft Ihnen SYMGET():&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;* Globale Variable;&lt;/P&gt;
&lt;P&gt;%let flag = 'ja';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;* Aufbereitungsschritt;&lt;/P&gt;
&lt;P&gt;data aufbereitet;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;set rohdaten;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;flag = symget(&lt;/FONT&gt;&lt;FONT color="#800080" face="Courier New" size="3"&gt;'flag'&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;nbsp;flag eq "'ja'" then vorhandene_numvar = 2*vorhandene_numvar;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Viel Erfolg!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Mar 2016 11:29:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/CoDe-SAS-German/Globale-Variable-abfragen-nicht-innerhalb-eines-Makros/m-p/253754#M1961</guid>
      <dc:creator>CKothenschulte</dc:creator>
      <dc:date>2016-03-02T11:29:51Z</dc:date>
    </item>
  </channel>
</rss>

