C-Programme bestehen aus Funktionsaufrufen, mindestens aus einem, der die Funktion main aufruft. Der Funktionskörper wird in geschweifte Klammern gesetzt.
Ein einfaches Programm:
main() { printf("hello world \n"); }Das Programm soll in der Datei hello.c stehen, die im Verzeichnis cpgm unter dem Home-Directory verzeichnet sein soll.
Der volle Pfadname könnte beispielsweise lauten:
/u/institut/username/cpgm/hello.c
Zur Compilierung dient das Kommando:
cc
bzw. xlc
Es bewirkt gleichzeitig das Binden, sodaß sofort ein ausführbares Programm entsteht. Das erste Beispiel ist demnach folgendermaßen zu übersetzen:
cc hello.c
bzw. xlc hello.c
Das ausführbare Programm wird automatisch in der Datei
a.out
im gleichen Verzeichnis abgespeichert. Das Programm kann nun mit dem Aufruf
a.out
ausgeführt werden. Die Datei a.out wird bei jeder Übersetzung immer wieder überschrieben. Soll dies verhindert werden, so kann beim Aufruf des C-Compilers mit der Option -o ein frei definierbarer Name angegeben werden:
cc -o hello hello.c
bzw. xlc -o hello hello.c
Das ausführbare Programm steht nun in der Datei
hello
und kann durch entsprechende Eingabe gestartet werden.
Der PASCAL Compiler XLP unterstützt standardmäßig die Sprachdefinition gemäß ANSI-83. Darüber hinaus werden die Spracherweiterungen gemäß IBM VS PASCAL Release 1 und, mit Einschränkungen, Release 2 (ein in der /370-Welt verbreiteter PASCAL-Dialekt) angeboten.
Zu den Eigenschaften des XLP Compilers gehören u.a.:
Optimierter Object Code
Fehlermeldungen im Klartext
Vielfältige Optionen beim Kommandozeilen-Aufruf
Unterstützung des symbolischen Debuggers dbx
Sprachübergreifende Anwendungen
Der zuletzt genannte Punkt ist eine gemeinsame Eigenschaft aller IBM XL Sprachen und steht für die Fähigkeit, Pascal Prozeduren (z.B.: "procedure Name; EXTERNAL") und Variablennamen (z.B.: DEF Name: integer;) anderen C- oder Fortran-Programmen zugänglich zu machen. Gleiches gilt natürlich auch in umgekehrter Richtung, d.h. Pascal-Programme können auf C- und Fortran-Module zugreifen und mit ihnen kombiniert werden.
Der PASCAL Compiler wird mit folgendem Kommando aufgerufen:
xlp [Compileroptionen] Dateiname [Dateiname]....
Werden beim Aufruf keine Optionen und Dateinamen mitangegeben, so erscheint ein Hilfetext, der die grundsätzlichen Optionen bzw. Einstellungen beschreibt. Weiterreichende Hilfe kann der Anwender im AIX XL Pascal Compiler/6000 Users's Guide nachschlagen.
Die Übersetzung eines FORTRAN-Programmes geschieht mit dem Kommando:
xlf [Optionen] datei
bzw. f77 [Optionen] datei
Das Kommando f77 ist ein Aliasname zu xlf.
Als datei ist der vollständige Name der Datei einzusetzen, in der das Programm steht.
Endet der Name auf ".f", dann erwartet der Compiler ein Fortranquellprogramm, mit ".o" eine Objektdatei, mit ".s" ein Assemblerquellprogramm.
Das ausführbare Programm wird standardmäßig in die Datei "a.out" geschrieben.
Eine Liste der möglichen Optionen bekommt man durch Aufruf von 'xlf' ohne Parameter.
Das ausführbare Programm wird standardmäßig in die Datei "a.out" geschrieben.
f90 [Optionen] datei
Der File-Postfix .f90 wird angenommen, falls kein anderer vorhanden ist, mit der Bedeutung "free source form", dh. freie Form des Quellprogramms.
Die Postfixe .f .ftn .for bedeuten "fixed form", dh. die von Fortran77 vorgeschriebene feste Spalteneinteilung (1-5,6,7-72)
Für Programmentwicklung und Test ist folgendes wichtig:
Der Compiler garantiert durch einen automatischen globalen Check, daß Argumentlisten und Funktionsergebnisse im Quellprogramm-File konsistent sind.
Darüber hinaus sind folgende Optionen wichtig: f90 -C prüft Index und Substring auf absolute oder angenommene Grenzen
f90 -P entsprechendes für Pointer
f90 -pg execution time Profiler
Näheres mit "man f90", unter X-Windows auch: xman section user commands "f90".
Will man Unterprogramme aus anderen Bibliotheken mit einbinden, so werden diese über die Optionen "-L<pfad>" für die Pfadangabe und "-l<name>" für den Namen der Bibliothek angegeben. Die Option "-L" kann bei den standardmäßig angezogenen Pfaden "/lib" und "/usr/lib" weggelassen werden. Um z.B. Unterprogramme aus der ESSL-Bibliothek einzubinden, ist folgender Befehl erforderlich:
xlf fort.f -L/usr/lib -lessl
(In diesem Beispiel könnte "-L/usr/lib" auch fehlen, weil dieses Verzeichnis standardmäßig im Pfad vorhanden ist.).
Zum Einbinden mehrerer Bibliotheken können die Optionen "-L" und "-l" beliebig oft wiederholt werden.
Am URZ existieren Skripten zu den einzelnen Bestandteilen (Module) des SAS-Systems. Daher werden hier nur die UNIX-typischen Besonderheiten des Programms beschrieben.
SAS/Base ist das Basissystem von SAS
SAS/FSP dient zur maskengesteuerten Datenerfassung
SAS/GRAPH ist die Graphikkomponente des SAS-Systems
SAS/STAT enthält die Statistikprozeduren
SAS/ASSIST ist eine menügeführte Oberfläche für das System
SAS/INSIGHT dient der explorativen Datenanalyse
SAS/CONNECT stellt die Verbindung zur IBM 3090 her
Der klassische Aufruf:
sas
startet das SAS-System im Display Manager Modus mit den drei Fenstern Programmeditor, Log-Meldungen und Output-Fenster. (vergleichbar zu SAS/PC bzw. SAS unter TSO).
sas
startet das SAS-System im Display Manager Modus als Hintergrundprozeß. Parallel zur laufenden SAS-Sitzung können im aktuellen XTERM-Fenster weitere Prozesse ablaufen (z.B. Dateiabfragen mit ls).
sas -nodms
startet SAS im Zeilenmodus ohne den Display Manager. Dieser ungewöhnliche Modus kann beim Testen neuer Programme Vorteile bringen, weil jedes eingegebene Statement sofort ausgeführt wird.
sas filename
startet das SAS-System im Batchmodus. Das File filename enthält SAS-Statements, die mit obigem Aufruf zur Ausführung an das SAS-System übergeben werden. Nach Ablauf des Programms existieren zwei neue Files mit Namen filename.LOG und filename.OUT, die die Meldungen und die Ergebnisse von SAS enthalten. (Die Files spiegeln quasi die Fenster der interaktiven SAS-Benutzung wider.)
Für alle SAS-Benutzer wird dazu im AFS ein bestimmter physikalischer Plattenbereich freigehalten (momentan 600 MB), der unter den aktiven SAS-Benutzern verteilt werden kann. Dieser Bereich wird regelmäßig gelöscht, um nach Programm- bzw. Systemabstürzen übriggebliebene Daten zu entfernen und somit wieder Platz zu schaffen.
Wenn mehr als 600 MB WORK-Bereich benötigt werden, muß man sich aus dem AIX-Cluster eine Maschine aussuchen, deren tmp-Bereich genügend groß ist und das SAS-System mit der Option work aufrufen, um den Standardworkberich umzuleiten:
sas -work /tmp
Man kann selbstverständlich auch ein (bestehendes) Unterverzeichnis seines HOME-Verzeichnisses zum WORK-Bereich definieren.
Möchten Sie lieber mit der Kommandozeile arbeiten, wählen Sie den Menüpunkt GLOBAL COMMANDS COMMANDLINE aus oder Sie drücken einfach die Funktionstaste F10.
In die Kommandozeile springt man mittels <Ctrl-F>.
Den Einfügemodus erhält man mit <Ctrl-X>.
Zusätzlich zur standardmäßigen Tastenbelegung ist die Taste F9 mit dem Druckbefehl (PRINT FREE) belegt.
Die Standards für die anderen Tasten findet man im KEYS-Fenster (F2 oder Kommando KEYS).
file 'filename'auf der Kommandozeile abgeschickt wird, oder auf dem Drucker ausgegeben werden mittels des Kommandos
print ;freeMit dem Befehl FREE erreicht man, daß der Druck sofort ausgeführt wird. Ansonsten wird er erst nach Beendigung der SAS-Sitzung zum Drucken losgeschickt.
Standardmäßig wird der Druckjob auf dem DIN4-Endlos-Matrixdrucker UMD4 ausgegeben. Die SAS-Option
sysprint='-P'+gewünschter Druckergestattet allerdings die Auswahl eines anderen Druckers (siehe unter: Verfügbare Drucker).
Gibt man den Filenamen beim Kommando nicht in Hochkommata und ohne Pfad an, legt SAS den File in das aktuelle Verzeichnis unter dem Namen
filename+Erweiterung
ab, wobei die Erweiterung vom jeweiligen Fenster abhängt:
filename.sas Programmeditor-Fenster
filename.out Output-Fenster
filename.log Log-Fenster
XDOK IBM 3820 Endlos-DinA4-Umweltschutzpapier DIN4 IBM 3820 weißes Einzelblatt-DinA4-Papier PENPL Pen-Plotter mit 8 Farben (Größe bis 88 x 495 qcm) PLOTTER Raster-Plotter (schwarz/weiß, Größe bis 88 x 495 qcm)
und werden mittels des Statements
goptions device=...
aktiviert. Die Grafik erscheint dabei nicht am Bildschirm, sondern wird in eine Metagrafik-Datei Plot.in.MVS gestellt, die außerhalb der SAS-Umgebung mit
mvsplot
zum Drucker geschickt. (--> Verweis) Previewing der Grafik ist dabei möglich.
Voraussetzung ist, daß Sie eine Benutzernummer im MVS haben. mvsplot erfragt jetzt nämlich noch Ihr Password und den Namen des Plotters, der den MVS-Konventionen genügen muß:
DIN4, XDOK für din4 und xdok NORM(=Standard) für penpl STD1 für plotter
Derzeit stehen zwei Laserdrucker zur Verfügung: ein HP-Laserjet (Device-Name: hplj300) und der postskriptfähige QMS-Laserdrucker (Device-Name qmsps800) mit einer Auflösung von 600 dpi.
Die notwendigen SAS-Statements sind dabei wie folgt, wobei die erstellte Datei den Namen PLOT.OUT erhält:
filename gsasfile 'PLOT.OUT'; goptions target=device-name gsfmode=replace gaccess=gsasfile; proc gplot ....; ...; run;Nach dem Submittieren des Programms wird die Grafik am Bildschirm angezeigt und kann bei Gefallen mittels des Kommandos PRINT in die Datei geschrieben werden. Im LOG-Fenster erfolgt dabei die Meldung:
xy records were written to fileNun schickt man die Datei mittels binären Datentransfer (etwa FTP) zum PC und dort mit dem Befehl
copy plot.out lpt3:/b zum HP-Laserjet bzw. copy plot.out lpt1:/b zum QMS-Laserdrucker.
Um permanente SAS-Dateien zwischen MVS oder PC-DOS und UNIX auszutauschen, muß zunächst ein Transportfile erstellt werden, der binär mittels FTP übertragen wird und in die neue SAS-Umgebung importiert werden muß.
Zwischen SAS-Versionen gleicher Release-Nummer (etwa SAS/MVS 6.07 und SAS/UNIX 6.07) oder von einer niedrigeren zu einer höheren Release-Nummer (SAS/PC DOS 6.04 zu SAS/UNIX 6.07) geschieht dies mit Hilfe der Prozeduren CPORT und CIMPORT. Die genaue Syntax dazu lautet:
proc cport data=libref1.dateiname1 file=fileref|'filename'; proc cimport infile=fileref|'filename' data=libref2.dateiname2
Bei der File-Option kann entweder die Filereferenz zu einem File angegeben werden, der zuvor über ein File-Statement angezogen wurde, oder der Filename wird direkt, in Hochkommas eingetragen.
Um dagegen SAS-Dateien von UNIX 6.07 zu SAS/PC DOS 6.04 zu transportieren, muß die Prozedur COPY benutzt werden, wobei das auf den Transportfile zeigende Libname-Statement mit den Engines XPORT bzw. SASV5XPT gebildet werden muß.
Beispiel-Aufruf:
UNIX:
libname trans xport 'UNIX-dateiname'; proc copy in=UNIX-libref out=trans; run;FTP vom PC:
put UNIX-dateiname PC-dateinamePC:
libname trans sasv5xpt 'PC-dateiname'; proc copy in=trans out=PC-libref; run;
Die Remote-Sitzung läßt sich auf zwei verschiedene Arten öffnen:
SAS/ASSIST (gegenwärtig nur unter UNIX)
Kommando SIGNON
Bevor das Kommando SIGNON abgeschickt wird, müssen die Optionen REMOTE=MVS und COMAMID=TELNET gesetzt werden und das FILENAME-Statement mit Fileref RLINK auf den Script-File /USR/LIB/SAS/URZHD/TELTSO.SCR, der die Öffnung der Remote-Sitzung steuert, gesetzt werden. Nach erfolgreichem SIGNON werden die Dateien und Kataloge mit PROC UPLOAD oder DOWNLOAD hin- und hergeschickt. Am Ende wird die Verbindung mit dem Kommando SIGNOFF beendet.
Bequemer - weil menügeführt - funktioniert der ganze Prozeß mit SAS/ASSIST (unter UNIX). Bei REMOTE CONNECT etabliert man zunächst die Sitzung.
Description: TSO-Sitzung Remote: MVS Script: /usr/lib/sas/urzhd/teltso.scr Comamid: TELNET).Mit Transfer Data werden danach die Prozeduren UPLOAD und DOWNLOAD aufgerufen. Mit Utilities stellen Sie Libname- und Filename-Statements am lokalen und Remote-Rechner auf. Mittels Terminate connection wird die Remote-Sitzung beendet.
Für die beiden Prozeduren UP- und DOWNLOAD werden zwei Libname-Statements benötigt: eines für die Daten am lokalen Rechner
libname lokal 'Pfad'; Kommando: submitund eines für die SAS-Datei am Remote-Rechner:
libname remote 'TSO-Datei' disp=old; Kommando: rsubmitMit der Prozedur DOWNLOAD werden die Daten vom Remote-Rechner zum lokalen Rechner 'heruntergezogen'. Der Aufruf lautet:
proc download data=remote.datei out=lokal.datei; run; Kommando: rsubmitMit der Prozedur UPLOAD werden die Daten vom lokalen Rechner zum Remote-Rechner 'hinaufgeschickt'. Der Aufruf lautet:
proc upload data=lokal.datei out=remote.datei; run; Kommando: rsubmitEs können dabei auch externe Files, Programme usw. über diese Verbindung geschickt werden.
SAS Language Reference, Version 6, First Edition
SAS Procedure Guide, Version 6, Third Edition
SAS/STAT User's Guide 1 und 2
SAS/GRAPH Reference 1 und 2
existiert ein separates Handbuch für die UNIX-Version
SAS Companion for the UNIX Environment and Derivatives, Version 6, First Edition Die Verbindung SAS/MVS und SAS/UNIX mittels SAS/CONNECT ist ausführlich beschrieben in
SAS/CONNECT Software, Usage and Reference, Version 6,First Edition.
SAS/PC Benutzerleitfaden (u.a. Informationen zur Unterbrechung der PC-MVS-Sitzung)
Der Einsatz von Datenbanken unter UNIX wird noch untersucht.
(in Planung)