7


Anwendungssoftware

Programmiersprachen
Programmbibliotheken
SAS
TeX
Datenbanken
Mathematische Systeme


7. Anwendungssoftware

7.1. Programmiersprachen

7.1.1. C

Die Programmiersprache C ist eng mit UNIX verknüpft, das überwiegend selbst in C geschrieben ist. Viele positive Systemeigenschaften können durch Programmierung in C genutzt werden, beispielsweise die Ein-, Ausgabeumlenkung (Filtereigenschaften) und der Pipe-Mechanismus. Der UNIX-Befehlssatz kann durch meist kleine C-Programme erweitert werden.

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.

7.1.2. Pascal

Die Programmiersprache PASCAL findet wegen ihrer klaren Struktur, ihrer Fähigkeit zur Modularisierung und ihrer überschaubaren Syntax sowohl in der Ausbildung, als auch in der Produktion Verwendung. Aus diesen Gründen steht der/dem Programmiererin/Programmierer neben C und FORTRAN unter der IBM AIX RISC Umgebung auch der PASCAL Compiler XLP zur Verfügung.

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.

7.1.3. Fortran77

Die Programmiersprache FORTRAN wird für überwiegend numerische Anwendungen immer noch häufig eingesetzt. Sie wird daher in der Installation am URZ von Anfang an mit angeboten.

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.

7.1.4. Fortran90

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".

7.2. Programmbibliotheken

Als Programmbibliotheken sollen angeboten werden: IMSL, NAG, Cernlib und ESSL.

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.

7.3. SAS

SAS (Statistical Analysis System) ist ein Programmpaket zur Erfassung, Speicherung, Verarbeitung und Auswertung von Daten. Zum Einstieg in das Statistikprogramm SAS sind im PC-Pool des URZ je Computer Based Tutorials (CBT) 1 bis 6 installiert, die im Selbststudium durchgearbeitet werden können.

Am URZ existieren Skripten zu den einzelnen Bestandteilen (Module) des SAS-Systems. Daher werden hier nur die UNIX-typischen Besonderheiten des Programms beschrieben.

7.3.1. Installierte SAS-Module

SAS (momentan Release 6.07) ist unter UNIX mit folgenden Modulen installiert:

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

7.3.2. Aufruf

SAS/UNIX kann auf vier verschiedene Arten aufgerufen. Der jeweilige Aufruf entscheidet darüber, welcher Arbeitsmodus für die SAS-Umgebung gewählt wird.

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.)

7.3.3. Das WORK-Verzeichnis

Die temporären Dateien und Kataloge werden vom SAS-System in das WORK-Verzeichnis gestellt. Das zugehörige Libname-Statement setzt das Programm selbständig. Beim regulären Ausstieg aus dem SAS-System mit 'bye' oder 'endsas' (nicht 'kill' oder Absturz), werden diese Files dann wieder gelöscht.

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.

7.3.4. Tastenbelegungen

Beim Starten des System im interaktiven Modus erscheint oberhalb jeden Fensters eine Menüleiste, auf der mittels Maus oder TAB-Taste gewandert werden kann und Menüpunkte ausgewählt werden können.

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).

7.3.5. Ausgabe von Fensterinhalten

Der Inhalt eines der drei SAS-Fenster PGM, LOG und OUT kann entweder in eine Datei (hier mit dem Namen filename) abgespeichert werden, indem das Kommando
	file  'filename'
auf der Kommandozeile abgeschickt wird, oder auf dem Drucker ausgegeben werden mittels des Kommandos
	print ;free
Mit 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 Drucker
gestattet 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

7.3.6. Ausgabe von Grafiken

7.3.6.1. Ausgabe auf den MVS-Plottern

An direkten Grafikausgabemöglichkeiten stehen am URZ die an die MVS-Maschine angeschlossenen Plotter zur Verfügung. Als Devices des Goption-Statements stehen zur Verfügung:

           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                    

7.3.6.2. Ausgabe über Laserdrucker

Alternativ dazu können Sie Ihre Grafiken über die an die PCs angeschlossenen Laserdrucker ausgeben. Dazu wird die Grafik in einen Graphic Stream File (GSF) geschrieben, dieser File mittels Filetransferprogramm (FTP) zum PC übertragen und von dort zum Laserdrucker geschickt.

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 file
Nun 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.

7.3.7. Übertragung von SAS-Daten anderer Betriebssysteme

7.3.7.1. Übertragung von Transportfiles

SAS-Programme lassen sich mühelos mittels FTP von PC oder Großrechner auf die Workstation übertragen und auch wieder zurück. (Hier aber keine binäre Übertragung, sondern als ASCII-Text.)

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-dateiname
PC:
libname trans sasv5xpt 'PC-dateiname';
proc copy in=trans out=PC-libref;
run;

7.3.7.2. SAS-CONNECT

Mit dem Modul SAS/CONNECT wird von der SAS-Sitzung eines lokalen Rechners (PC oder Workstation) eine SAS-Sitzung am Remote-Rechner (MVS) eröffnet. Diese beiden SAS-Sitzungen gestatten den direkten Austausch von SAS-Dateien, Libraries und Katalogen durch die Prozeduren UPLOAD und DOWNLOAD.

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: submit
und eines für die SAS-Datei am Remote-Rechner:
libname remote 'TSO-Datei' disp=old;
Kommando: rsubmit
Mit 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: rsubmit
Mit 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: rsubmit
Es können dabei auch externe Files, Programme usw. über diese Verbindung geschickt werden.

7.3.7.3. Unterbrechen der SAS-Sitzung

Unter UNIX dient das Fenster XSASSM dazu, die Verbindung zu unterbrechen (Interrupt), um Kommandos ans TSO abzuschicken (etwa wenn eine Datei ausgelagert ist und das TSO fragt, ob die Datei zurückgeholt werden soll oder nicht) oder die Verbindung ganz abzubrechen (Terminate).

7.3.8. Literatur

Neben den üblichen SAS-Manuals

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)

7.4. TeX

TeX ist auch unter UNIX installiert. Zur Beschreibung wird auf gesonderte Dokumentation zu TeX verwiesen.

7.5. Datenbanken

Der Einsatz von Datenbanken unter UNIX wird noch untersucht.

7.6. Mathematische Systeme

7.6.1. Maple

Maple ist installiert und auf allen RS/6000-Rechnern verfügbar. Für die Beschreibung wird gesonderte Dokumentation bereitgestellt.

7.6.2. Mathematica

(in Planung)