-
JobQ und Parameter
Vermutlich wurde das Thema auch schon behandelt - suchen danach hat nix gebracht.
Ich hab da einen seltsamen Fall:
Wenn ich ein CL mit x Parameter aufrufe, erhalte ich interaktiv ein richtiges Ergebnis und in der Jobq ein Anderes. Namentlich geht es darum einen Pfad mit einem Dok-Namen zusammenzusetzen um danach einen CpyToImpf durchzuführen.
Kennt jemand diese Macke?
Zum Verständnis, die Parameteraufrufe sind völlig identisch, nur einmal mit Submit und das andere mal ein direkter Call.
kf
-
Das Problem hatten wir wirklich schon des öfteren.
Stichwort Parameter im CALL-Kommando.
Die Parameter müssen in der Länge übergeben werden, die dein Programm erwartet.
Im Dialog ist das leicht, da gibst du die Werte in Hochkomma an.
Beim SBMJOB übergibst du den CALL, aber deine Parameter mit Sicherheit nicht in Hochkomma.
Dadurch entfernt der Commandprozessor überzählige Leerzeichen und übergibt halt weinger an das Programm.
Im Speicher steht aber halt hinter den Parametern irgendein Schrott den nun dein Programm im Zugriff hat.
Lösung:
Übergib deine Parameter in Hochkomma!
Achtung, beim SBMJOB ist eine Verdopplung erforderlich da der CALL selber ja auch in Hochkomma steht.
-
Wie wärs mit einem selbst erstellten Befehl (CMD), um die Werte durch den SBMJOB in genau der benötigten Länge als Parameter ans CL-Programm weiterzugeben?
-
ich galube das ist wohl zu einfach.
-
Command klappt
... genauso wie wenn das CL-Programm, prüft ob es interaktiv aufgerufen wurde.
Beim interaktiven Aufruf macht es nichts anderes als sich selber zu submitten.
Beim Submit werden dann die Parameter als Variablen überegeben.
Birgitta
-
Und genau das ist ja der Fehler!
Beim "SBMJOB ... CMD(CALL MYPGM PARM(&F1))" wird der Inhalt von &1 an den CMD-Prozessor übergeben und dieser entfernt Leerzeichen am Ende wenn eben keine Hochkomas in der Variablen sind!
Nur wenn der Parameter kürzer als 32 ist wird bis 32 mit Leerzeichen aufgefüllt.
Wem das mit den Hochkommas zu viel ist, der nimmt einfach die Variable 1 Byte länger, setzt an die letzte Stelle ein "X". Der CMD-Prozessor packt das selber in Hochkomma und verdoppelt vorkommende Hochkomma.
Da das empfangende Programm 1 Zeichen weniger erwartet ist das "X" unsichtbar.
-
Zitat von Fuerchau
Wem das mit den Hochkommas zu viel ist, der nimmt einfach die Variable 1 Byte länger, setzt an die letzte Stelle ein "X". Der CMD-Prozessor packt das selber in Hochkomma und verdoppelt vorkommende Hochkomma.
Da das empfangende Programm 1 Zeichen weniger erwartet ist das "X" unsichtbar.
Und genau so hab ich's gemacht und funktioniert. Selbst die Doku darüber hab ich nicht vergessen, falls mal einer das nicht gleich schnallt. Danke.
kf
Similar Threads
-
By JoergHamacher in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 15-09-16, 11:40
-
By AK1 in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 13-08-15, 11:30
-
By Starocotes in forum IBM i Hauptforum
Antworten: 23
Letzter Beitrag: 19-05-15, 13:04
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 28
Letzter Beitrag: 17-01-08, 10:35
-
By JonnyRico in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 02-04-03, 15:53
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks