Community deutschsprachiger SAS-Anwender und -Programmierer

Antworten
Dies ist eine offene Gruppe. Melden Sie sich an und klicken Sie auf die Schaltfläche „Gruppe beitreten“, um Mitglied zu werden und damit zu beginnen, Beiträge in dieser Gruppe zu veröffentlichen.
Highlighted
N/A
Beiträge: 0
Harte Nuss mit RSUBMIT

Hallo allerseits,

folgendes Programm (via SAS EGuide auf UNIX mit Connect auf z/OS, vereinfacht dargestellt)

funktioniert solange es ohne die KEEP= Anweisung läuft. Wenn dieses Programm auf dem

Großrechner läuft, entfallen natürlich RSUBMIT und SYSLPUT. Dann funktioniert auch die

KEEP= Anweisung, welche als Parameter in einem Macro übergeben wird. Ich hatte schon

vieles auf dem Tisch, aber so etwas ... Vielleicht kennt jemand das Problem ... Oder sind

hier dem RSUBMIT endgültig die Grenzen gesetzt, denn die Fehlermeldung lautet:

ERROR 214-322: Variable name % is not valid.

Vermutlich erwartet der Compiler aufgrund des "=", dass ein Schlüsselparameter übergeben

werden soll. Jedoch steht hier eine Data Set Option, die zudem auf z/OS lauffähig ist.

VG

%macro test;

%global ein aus;

%let ein = " ";

%let aus = " ";
  filename rlink ... ;

  signon ... ;

%DO nre = 0 %TO 1;

%LET ein = AB.EIN.BES&nre ;

%LET aus = AB.AUS.BES&nre ;

%syslput nre=&nre.;

     %syslput ein=&ein.;

     %syslput aus=&aus.;  

rsubmit;

filename INLIB "&ein." disp=shr;

libname OUTLIB "&aus."

DISP=(NEW,CATLG,DELETE)

SPACE=(CYL,(100,1000),RLSE) ;

DATA OUTLIB.stamm(KEEP=%STAMM(NOFORMATE));

RETAIN;

INFILE INLIB obs=100;

INPUT @1 felda  $1.

@2 feldb  $10.

@;

OUTPUT;

RUN;

  %END;

signoff;

%mend test;

%macro STAMM;

%IF &FORMAT=FORMAT %THEN %LET K1=A;

                     %ELSE %LET K1= ;

feldc  &K1

feldd  &K1

%mend STAMM

%test;


Frequent Contributor
Beiträge: 121
Re: Harte Nuss mit RSUBMIT

So wie ich das Problem sehe, kennt die Remotesitzung das Makro %STAMM nicht.

Alles zwischen RSUBMIT und ENDRSUBMIT bzw. SIGNOFF wird als reiner Text an die Remotesitzung geschickt. Makros und Makrovariablen werden nicht aufgelöst. Daher muss man auch Makrovariablen per %syslput an die Remotesitzung übergeben, damit diese dort verwendet werden können.

Zur Lösung des Problems:
Variante 1: das Makro %Stamm in der Remotesitzung definieren

Variante 2: das Makro %Stamm lokal ausführen und das Ergebnis in eine Makrovariable schreiben, dann die Makrovariable per %syslput an die Remotesitzung übergeben und an Stelle von %stamm die neue Makrovariable verwenden.

Ich hoffe das Problem kann hierdurch gelöst werden.

Viele Grüße,

Andreas Menrath