-
seltsames Phänomen bei SBMJOB
Hallo,
wir haben ein Problem, wenn wir aus einem RPG-Programm heraus einen SBMJOB über QCMDEXC aufrufen. Wenn nämlich dem aufgerufenen Programm ein Parameter übergeben wird, der ein nicht-darstellbares Zeichen enthält (z.B. Hexa 0D25 = CRLF), dann erhalten wir den Fehler CPD0183: Eingebetteter Befehl CALL ist zu lang. Die Befehlslänge beträgt angeblich 20185 Stellen, was jedoch nicht stimmt. Wenn wir nur normale Zeichen (ab Hexa 40) verwenden, dann funktioniert alles problemlos. Hat schon mal jemand diesen Fehler gehabt ? Ursprünglich wollten wir den Aufruf über einen CMD machen. Das scheidet jedoch aus, da als Parameter nur max. 5000 Stellen erlaubt sind und wir mehr benötigen.
Gruß,
KM
-
Scheinbar kommt eben QCMDEXC mit CRLF nicht zurecht.
Versuche es doch mal mit diesem API:
Process Commands (QCAPCMD) API
Oder du musst über ein Redesign nachdenken.
-
Eventuell hilft es auch den SBMJOB zu verändern?
Also die Parameter und den entsprechenden Auftrag nicht über die Variabel CMD laufen lassen, sondern in RQSDTA.
k.
-
Wie erfolgt denn der Aufruf genau (Quelltextauszug)?
Vielleicht ist die als Befehl übergebene Zeichenkette ja wirklich zu lang?
-
@Fuerchau: Beim QCAPCMD passiert genau dasselbe. Redesign sollte nur die letzte Möglichkeit sein, da ja offenbar ein Fehler vorliegt.
@Kuempi: Der Parameter RQSDTA lässt nur maximal 3000 Zeichen zu. Das ist zu wenig.
@Pikachu: Der Befehl ist definitiv nicht zu lang. Ich kann z.B. 9999 mal 'x' an das Parameterfeld übergeben. Das funktioniert problemlos. Wenn ich aber nur einmal CRLF (also nur 2 Byte) oder ein anderes nicht-darstellbares Zeichen (z.B. Hexa 3A) einfüge, kommt der Fehler, dass die maximale Länge von 20000 für den eingebetteten Befehl überschritten wurde.
Sonst noch rigendwelche Ideen ?
Gruß,
KM
-
Nicht darstellbare Zeichen vermeiden 
Alternativ den Parameter Hex expandieren und per X'...' übergeben.
-
Ich wollte damit ja auch nur sagen, dass der Fehler nur vorkommt, wenn man Zeichen unter Hexa 40 verwendet. Das war ja nur ein Beispiel. Wir benötigen nun mal den CRLF. Diesen fügen wir in das Parameterfeld ja schon mit X'0D25' ein. Eine andere Möglichkeit kenne ich nicht.
KM
-
Folgendes Programm übergibt einen Paramter mit besagten Zeichen und läuft hier unter V5R4. Kannst du einmal prüfen, ob es auch bei dir läuft?
Code:
D QCMD S 16384A INZ
D QCMDLEN S 15P 5 INZ(%SIZE(QCMD))
D PARM S 80A INZ
D**********************************************************************
C EVAL PARM = 'ABCD' + X'0D25' + 'EFGH'
C EVAL QCMD = 'SBMJOB CMD(CALL PGM(SBM2) ' +
C 'PARM(''' + PARM + '''))'
C CALL 'QCMDEXC'
C PARM QCMD
C PARM QCMDLEN
C MOVE *ON *INLR
-
Bei kurzen Parameterfeldern funktioniert der Aufruf. Ändere mal die Länge von PARM auf 12000 Stellen. Bin mal gespannt was dann bei Dir passiert. Wir haben übrigens auch V5R4.
KM
-
Seltsam. Bis zu einer Länge von 9988A für die Variable PARM läuft's, auch wenn diese Variable X'0D25' enthält. Ab einer Länge von 9989A für die Variable PARM läuft's nur noch, wenn das X'0D25' aus der Zuweisung entfernt oder z.B. durch X'4040' ersetzt wird.
-
Genau das ist das Problem. Na, dann sind wir nicht die einzigen, die diesen Fehler haben. Bei uns liegt der Schwellenwert irgendwo zwischen 9700 und 9800 Stellen, weil wir noch ein paar andere Parameter übergeben. Die Grenze ist also nicht fix, sondern hängt irgendwie von der Länge der Parameter ab.
Es scheint also keine Lösung für diesen Fehler zu geben. Dann müssen wir uns doch anders behelfen.
KM
-
Es scheint, als würde der Inhalt dieses Parameters in Hex-Schreibweise ('...0D25...') übergeben werden, sobald Zeichen kleiner Hex 40 vorhanden sind. Oder dieser Parameter wird intern in Doppelbyte-Darstellung konvertiert und dann übergeben. Das würde dann ja tatsächlich mehr als die maximal erlaubten 20.000 Bytes ergeben.
Similar Threads
-
By Dominik Meyer in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 13-01-07, 15:16
-
By hww in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 12-12-06, 15:27
-
By TARASIK in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 12-12-06, 13:24
-
By Luebbert in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 13-09-06, 11:39
-
By muadeep in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 27-06-06, 11: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