PDA

View Full Version : Problem bei CHGVAR



Vira
21-11-19, 13:21
Hallo Zusammen
kann mir jemand Unterstützung geben
hab eine Variable so eine deklariert

DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')

und möchte dann ein

CHGVAR VAR(&CMDSHR) VALUE('PS -EF | GREP ' *CAT +
'PHP-CGI' *CAT ' | AWK "{PRINT $2}" | +
XARGS KILL -9' || &NULL)

aber der Editor reklamiert immer mit folgende Fehlermeldung

Zeichenfolge '|| &NULL) ' enthält ein ungültiges Zeichen.

Danke für die Unterstützung
Grüsse
Vito

dschroeder
21-11-19, 13:41
Müsste es nicht so heißen?

... XARGS KILL -9' *CAT &NULL)

Ich glaube, das || ist im CL kein gültiger Concatenator. Du musst *CAT verwenden.

Dieter

Robi
21-11-19, 13:42
die 12 Striche gibt es nur in der SQL Umgebung aber auch dort wäre concat die bessere Wahl.
hier mußt du *tcat * cat oder *bcat verwenden.

außerdem muß hinter den strich der 2. zeile ein '
und vor das xargs ebenfals ein '

nico1964
21-11-19, 14:36
So geht's bei mir

CHGVAR VAR(&CMDSHR) VALUE('PS -EF | GREP ' *CAT +
'PHP-CGI' *CAT ' | AWK "{PRINT $2}" | +
XARGS KILL -9' *CAT &NULL)
ohne meckern.

Vira
21-11-19, 14:47
Danke, funktioniert bei mir auch
Gruss

kitvb1
22-11-19, 05:22
Das || kann in CL verwendet werden.

Aus dem Handbuch "Software Development Guidelines", das ich für unsere Group-IT entwickelt habe:


The use of ¬=, ||, |>, and |< is not accepted. From the IBM manual C4157215.pdf:



<tbody>
Note: Using the ampersand symbol or the vertical bar can cause problems because the symbols are not at the same code point for all code pages. To avoid this, use *AND and *OR instead of the symbols.


</tbody>

Fuerchau
22-11-19, 07:47
Wie du schon sagst. Die Zeichen sind Codepage-Abhängig und werden nur zur Compilezeit entsprechend umgewandelt (SRC-CCSID->Job-CCSID).
Zur Laufzeit funktioniert das dann nicht mehr, wenn eine andere CCSID verwendet wird, da Programmcode keiner Umwandlung mehr unterliegt.
Das kennt man ja eigentlich auch schon aus RPG/LE für Zeichen wie #,&,...