Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

streams und OpenVMS

40 views
Skip to first unread message

Rüdiger Sonderfeld

unread,
May 30, 2002, 7:11:26 AM5/30/02
to
hallo,
wie funktionieren eigentlich streams unter OpenVMS?

Unter Unix kann man ja mit > (bzw. 2> und <) die Eingabe, Ausgabe, Fehler
Streams umbiegen.

Unter OpenVMS erhalte ich aber immer Fehler, wenn ich zB so etwas mache

$ DIR > dir.txt
%DCL-W-PARMDEL, invalid parameter delimiter - check use of special
characters
\>DEMO\

Carsten Wenzel

unread,
May 30, 2002, 7:50:59 AM5/30/02
to

$ Help DIR

...

$ DIR/OUT=dir.txt

HTH Carsten

--
%SYSTEM-E-NOSIGFOUND, Signature empty error
---------------------------------------------------------------
Suchen Sie eine Übernachtungsmöglichkeit in Sachsen-Anhalt?
Dann schauen Sie doch mal unter http://www.stadtrand.de

Karl Rohwedder

unread,
May 30, 2002, 8:10:23 AM5/30/02
to

Diese Funktionalität erhält man mit dem PIPE command. Um kompatibel zu
alten Prozeduren
zu bleiben, muss der DCL Befehl PIPE vorangestellt werden, z.B. $ PIPE
DIRECT > A.A

Hilfe hierzu gibt es (wie immer) mit $ HELP PIPE

--

mit freundlichen Gruessen | with best regards

Karl Rohwedder
iT-Ingenieurteam | Ellernbruch 11 | D-38112 Braunschweig
Telefon: 0531/515521 | Telefax: 0531/515531 | Mobil: 0172/5434843
E-Mail: rohwedder(at)decus.decus.de | iT-IngTeam(at)t-online.de
karl.rohwedder(at)it-ingenieurteam.de
DATEX-P: 4505018005::ROHWEDDER

Hans Bachner

unread,
May 30, 2002, 9:19:43 AM5/30/02
to
Rüdiger Sonderfeld (cplusp...@gmx.net) wrote:

> hallo,
> wie funktionieren eigentlich streams unter OpenVMS?
>
> Unter Unix kann man ja mit > (bzw. 2> und <) die Eingabe, Ausgabe,
> Fehler Streams umbiegen.

Dritte Variante (neben den bereits genannten):
die Standard-Streams heißen unter OpenVMS SYS$INPUT, SYS$OUTPUT und
SYS$ERROR und können mit $ DEFINE [/USER] umdirigiert werden (/USER sorgt
dafür, daß die Definition nur für den nächsten Programmaufruf gilt und dann
automatisch wieder verschwindet).

Also z.B.

$ DEFINE /USER SYS$OUTPUT ERGEBNIS.TXT
$ RUN MYPROG
$

sorgt dafür, daß die Ausgabe des Programms MYPROG in der Datei ERGEBNIS.TXT
landet, anstatt auf der Konsole/im Temrinalfenster angezeigt zu werden.

--
-------------- speaking only for myself -------------
Hans Bachner E-Mail: Hans.B...@hp.com
Compaq Computer Austria / Global Services
ein Unternehmen der neuen HP

Rüdiger Sonderfeld

unread,
May 30, 2002, 3:40:49 PM5/30/02
to
Carsten Wenzel wrote:
> $ DIR/OUT=dir.txt

es ging mir eigentlich generell darum, wie man die Ausgabe umleiten kann
und habe DIR nur als Beispiel genommen

Carsten Wenzel

unread,
May 30, 2002, 4:28:08 PM5/30/02
to
Rüdiger Sonderfeld schrieb:

OK.
Die nachfolgenden Beiträge sollten das ja beantwortet haben.
Das mit PIPE kannte ich selber nicht. Bin bei VMS 5.5-2
"stehengeblieben" und da ist das zumindest standardmäßig nicht dabei.

MfG Carsten
--
... Der Tag hat 24 Stunden. Wenn das nicht reicht, nehmen wir die Nacht
dazu...
---------------------------------------------------------------
Suchen Sie eine Übernachtungsmöglichkeit in Sachsen Anhalt?

B. Eckstein

unread,
May 30, 2002, 4:47:34 PM5/30/02
to
Hans Bachner schrub im Jahre 5/30/2002 3:19 PM:

> die Standard-Streams heißen unter OpenVMS SYS$INPUT, SYS$OUTPUT und
> SYS$ERROR und können mit $ DEFINE [/USER] umdirigiert werden (/USER sorgt

Anmerkung: Diese Variante funktioniert auch auf älteren VMSen,
auf denen es PIPE noch nicht gab. Ist in so fern zu bevorzugen.

--
B.Eckstein, - mailto:b...@epost.de
FAQ zu de.comp.hardware.netzwerke: http://how.to/dchn
"I remember being vaguely surprised when the milage counter in my car
went from 77777 to 77778 and not 100000, back in the days when I was
a PDP-11 expert!" Dan O'Reilly in comp.os.vms

Michael Wimmer

unread,
Jun 4, 2002, 3:58:23 AM6/4/02
to
>Hans Bachner wrote:

>>Rüdiger Sonderfeld wrote:
>> wie funktionieren eigentlich streams unter OpenVMS?
>Dritte Variante (neben den bereits genannten):
>die Standard-Streams heißen unter OpenVMS SYS$INPUT,
>SYS$OUTPUT und SYS$ERROR


Hat schon jemand versucht den Screenoutput zu lassen
und _gleichzeitig_ in ein Logfile mitzuschreiben.


mfg
Michael Wimmer
--
http://members.chello.at/schumi
--
__________________________________________________________
News suchen, lesen, schreiben mit http://newsgroups.web.de

Erwin Cramer

unread,
Oct 15, 2012, 9:30:45 AM10/15/12
to
Hallo,

wenn ich sys$input umlenke, z.B. auf eine Textdatei mit den Eingaben und anschl. mit @x.com eine Kommandoprozedur aufrufe, funktioniert das irgendwie nicht.

Leider habe ich auch nirgends etwas finden können, wie soetwas gehen könnte.
Hintergrund sind Überlegungen zum automatischen Testen von DCL-Scripten mit definierten Eingabewerten aus einer Textdatei und der Auswertung der Ausgabedatei.

Kann ich da etwas falsch gemacht haben?
$ define /user sys$input pin.txt
$ @x

Und wenn ich sys$command umlenke, kommt eine Fehlermeldung .

In x.com werden Eingabewerte abgefragt mit:
read sys$command wert /prompt = " ... "
oder
inq wert "Prompt"

Vielen Dank & Gruß
Erwin


Am Donnerstag, 30. Mai 2002 15:26:02 UTC+2 schrieb Hans Bachner:
> Rüdiger Sonderfeld wrote:
>
> > hallo,
> > wie funktionieren eigentlich streams unter OpenVMS?
> >
> > Unter Unix kann man ja mit > (bzw. 2> und <) die Eingabe, Ausgabe,
> > Fehler Streams umbiegen.
>
> Dritte Variante (neben den bereits genannten):
> die Standard-Streams heißen unter OpenVMS SYS$INPUT, SYS$OUTPUT und
> SYS$ERROR und können mit $ DEFINE [/USER] umdirigiert werden (/USER sorgt
> dafür, daß die Definition nur für den nächsten Programmaufruf gilt und dann
> automatisch wieder verschwindet).
>
> Also z.B.
>
> $ DEFINE /USER SYS$OUTPUT ERGEBNIS.TXT
> $ RUN MYPROG
> $
>
> sorgt dafür, daß die Ausgabe des Programms MYPROG in der Datei ERGEBNIS.TXT
> landet, anstatt auf der Konsole/im Temrinalfenster angezeigt zu werden.
>
>
>
> --
> -------------- speaking only for myself -------------
> Hans Bachner E-Mail:

Joseph Huber

unread,
Oct 16, 2012, 4:01:06 AM10/16/12
to
Erwin Cramer wrote:
> wenn ich sys$input umlenke, z.B. auf eine Textdatei mit den Eingaben und
> anschl. mit @x.com eine Kommandoprozedur aufrufe, funktioniert das
> irgendwie nicht.
>
> Leider habe ich auch nirgends etwas finden können, wie soetwas gehen
> könnte. Hintergrund sind Überlegungen zum automatischen Testen von
> DCL-Scripten mit definierten Eingabewerten aus einer Textdatei und der
> Auswertung der Ausgabedatei.
>
> Kann ich da etwas falsch gemacht haben?
> $ define /user sys$input pin.txt
> $ @x

Das 'umlenken' mit define/user bezieht sich nur auf das naechste aufgerufene
IMAGE, d.h. das SYS$INPUT (stdin, fortran default unit 5) des programs zeigt
auf den umgelenkten file sys$input (wie Hans das in vorheriger reply
erklaert hat).
Eine DCL prozedur dagegen definiert immer beim start SYS$INPUT auf sich
selbst, x.com, egal was fuer eine definition SYS$INPUT vorher hat.
Wenn x.com also etwas von x.com lesen will, dann nicht von sys$input,
sondern explicit von sys$pipe:
$ pipe copy x.dat sys$output | @x

> Und wenn ich sys$command umlenke, kommt eine Fehlermeldung .
> In x.com werden Eingabewerte abgefragt mit:
> read sys$command wert /prompt = " ... "
> oder
> inq wert "Prompt"

sys$command als DCL permant offenes file kann man nicht so einfach
umdefinieren.
So aber gehts:

$cat tmp.com
$ read sys$command x /prompt="prompt1"
$ write sys$output x
$ read sys$command x /prompt="prompt2"
$ write sys$output x
$ cat tmp.txt
antwort 1
antwort 2

Dann sys$command nach tmp.txt umlenken:

$ define sys$command/exec sys$pipe
$ pipe copy tmp.txt sys$output | @tmp
antwort 1
antwort 2
$ deass sys$command

INQUIRE scheint magisch statt sys$command von sys$pipe zu lesen:

cat tmp_inquire.com
$ inquire x "prompt1"
$ write sys$output x
$ inquire x "prompt2"
$ write sys$output x

$ pipe copy tmp.txt sys$output | @tmp_inquire
ANTWORT 1
ANTWORT 2

Fazit: man kann schon input von sys$command umlenken !


--

Remove NOREPLY. from Email address.
Joseph Huber, http://www.huber-joseph.de

Joseph Huber

unread,
Oct 16, 2012, 4:30:58 AM10/16/12
to
Joseph Huber wrote:

> Wenn x.com also etwas von x.com lesen will, dann nicht von sys$input,

Korrektur, muss heissen:
Wenn x.com also etwas von x.dat lesen will, dann nicht von sys$input,
sondern explicit von sys$pipe:
0 new messages