-
Das Problem könnte in der Tatsache liegen, das Parameter im ONLINE anders gehandt habt werden als im BATCH.
Dieses Problem löse ich dadurch, das ich auf der letzten Stelle der Parameter einen Stern setze, den das auszuführende CL wieder entfernt. Dann wird der Parameter in der Orginallänge an BATCH weitergegeben.
-
Wieder mal das übliche Problem von Parametern im CALL-Statement.
Rufst du im CLP per CALL ein anderes Programm übergibst du ja meist Variablen oder Konstanten in der korrekten Länge.
Machst du aber einen SBMJOB mit einem CALL-CMD, kürzt der CMD-Interpreter Leerzeichen am Ende weg, wenn der Wert nicht in Hochkomma steht.
Es erfolgt ggf. sogar eine Umsetzung ein Großbuchstaben.
Du kannst den Trick von MR-BN erweitern.
Da Werte an ein Programm immer per Referenz übergeben werden, kannst du natürlich das Übergabe-Feld auch um 1 Stelle größer definieren als das Zielprogramm benötigt.
Stelle dann ein beliebiges Zeichen an die überzählige Stelle.
Der CMD-Interpreter baut dann den SBMJOB korrekt zusammen und dein Programm erhälte den vollständigen Wert ohne das zusätzliche Zeichen.
Ansonsten:
Es gibt keine unterschiedliche Behandlung von Parametern im CALL zwischen Batch und Online.
Die Regeln dafür sind immer gleich:
Aus
call mypgm parm(xxxx)
wird
CALL MYPGM PARM(XXXX)
Wobei XXXX als 32-stelliges Feld übergeben wird.
Aus
call mypgm parm('xxxx')
wird
CALL MYPGM PARM('xxxx')
Jetzt wird 'xxxx' als 4-stelliges Feld übergeben.
-
-
vielen Dank, hatte den Fall einfach noch nicht, obwohl schon seit fast 20 Jahren dabei.
Hab mal die elegante Variante gewählt mit einer verkürzten Empfängervariable und läuft. Werd das aber wieder abändern, weil mir vielleich sonst noch ein Kollege irgendwann feststellt...unterschiedlich definiert, berichtige ich usw.
Allerdings verhält sich CALL und SBM CALL wirklich anders. Im Call war alles sauber, das abschneiden erfolgte nur beim SBM.
Ansonsten noch vielen Dank.
-
Was auch noch geht ist ein SBMJOB auf einen selbst erstellten Befehl, welcher das gewünschte CL-Programm als Befehlsverarbeitungsprogramm hat. Dann kommen die Parameter genau so wie im eigenen Befehl definiert an das CL-Programm.
-
Dann rufe mal CALL über die Kommandozeile und nicht per Programm auf.
CALL über Kommandozeile verhält sich wie CALL im SBMJOB.
CALL im CLP wird ja definiert aufgerufen und zur Compilezeit festgelegt und verhält sich da scheinbar anders, insbesonders wenn Variablen verwendet werden.
Und was das Abändern angeht musst du das nur richtig dokumentieren.
Similar Threads
-
By KM in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 15-01-07, 09:01
-
By jmoritz in forum IBM i Hauptforum
Antworten: 12
Letzter Beitrag: 18-10-06, 09:56
-
By dino in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 18-09-06, 12:14
-
By Franz_Rust in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 16-08-06, 14:39
-
By tomikra in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 02-03-05, 09:31
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