LesezeichenAbonnierenRSS-Feed abonnieren
JANOSA
Nicht anwendbar

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;


1 ANTWORT 1
AndreasMenrath
Pyrite | Level 9

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

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

Diskussionsstatistiken
  • 1 Antwort
  • 749 Aufrufe
  • 0 Kudos
  • 2 in Unterhaltung