[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2006
    Beiträge
    195
    D*B:
    Command funktioniert. und es werden Keine Hex wert übergeben.
    die Beschreibung bezog sich auf SBM und Call.

    Fuerchau:
    ich habe eine RPG Programm welches die DS füllt und anschliesend das CL aufruft. das CL macht SBMjob mit DS als parameter.

    Mir geht es jetzt nur die Problematik zu verstehen.
    Was läuft im Speicher ab.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.703
    Das liegt nicht am Speicher sondern in der Natur von Kommandos.

    Ein CALL im CLP ruft nicht das CMD-CALL wie aus der Kommandozeile auf sondern direkt den Maschinenbefehl Call analog zum Call in RPG/COBOL.

    Wenn CMD's aufgerufen werden, wird das Kommando im Speicher zusammengebaut (Runtimeroutinen des CLP's) und dann wie mit QCMDEXC aufgerufen.
    Der Kommando-Interpreter hat nun mal die Angewohnheit:
    Bei Zeichenketten ohne Hochkomma, die restlichen Blanks zu entfernen und wenn keine Sonderzeichen/Zahlen vorhanden sind, das Ergebnis in Großbuchstaben zu konvertieren.

    Das Hauptkommando ist hier der SBMJOB der mit Parametern gefüllt wird.
    Einer davon ist das halt das CMD-CALL.
    Analog zu RPG wird also folgendes gemacht:

    MyCall = 'CALL MYPGM PARM(' + MyDs + ')';

    Möchtest du die DS als Ganzes übergeben so ist das Ganze anzupassen:

    MyCall = 'CALL MYPGM PARM(''' + MyDs + ''')';
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.368
    Zitat Zitat von svit Beitrag anzeigen
    D*B:
    Command funktioniert. und es werden Keine Hex wert übergeben.
    die Beschreibung bezog sich auf SBM und Call.
    http://newsolutions.de/forum-systemi...html#post82300

    Wie dieser Übergabebereich erstellt wird, beschreibt die Bedienerhilfe des Parameters PARM des Befehls call:

    - alles numerische wird als dec (15 5) erstellt
    - alle Alfa Felder mit mindestens 32 bzw. mit aktueller (rechts getrimmter) Länge

    Falls dass dann im aufgerufenen Programm anders deklariert ist, kann es zu undokumentierten Effekten kommen, z.B.:
    - Absturz wg. nicht numerischer Daten
    - HEX00 Werte am rechten Rand
    - Überlappung von Inhalten
    - Machine Check wg. Pointer Fehler
    - ...

    Das Command Objekt beschreibt nun genau diesen Übergabestack in den dann die übergebenen Parameterliterale (vor dem Submit!) eingefüllt werden.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.703
    Kleine Korrektur:
    Vor dem Submit erfolgt nur die Aufbereitung des zu übergebenden Befehls als Gesamtstring!

    Erst im gestarteten Job wird dieser String durch den Commandprozessor wieder zerlegt und nach obigen Kriterien dann der Speicherbereich aufgebaut und das auszuführende Programm aufgerufen.

    Allerdings ist das Entfernen von "überflüssigen" Leerzeichen beim Submit bereits erfolgt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.368
    ... das Command Objekt macht einiges mehr, was hier nicht zum Verständnis nötig ist (z.B.: special values übersetzen etc.) und wird sowohl vor dem submit, als auch nach dem submit aufgerufen.

    D*B
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Kleine Korrektur:
    Vor dem Submit erfolgt nur die Aufbereitung des zu übergebenden Befehls als Gesamtstring!

    Erst im gestarteten Job wird dieser String durch den Commandprozessor wieder zerlegt und nach obigen Kriterien dann der Speicherbereich aufgebaut und das auszuführende Programm aufgerufen.

    Allerdings ist das Entfernen von "überflüssigen" Leerzeichen beim Submit bereits erfolgt.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.703
    Ja, das betrifft das SBMJOB-Command selber aber nicht das darin eingebettete auszuführende CMD.

    Der Job wird initiiert und das auszuführende CMD bzw. die RQSDTA werden als Request-Message in die Job-MSGQ gestellt.
    Über die Routing-Entries im Subsystem wird das zu startende Programm ermittelt (default QCMD).
    Dieser liest die Nachricht aus der Job-MSGQ und führt dann das Command mittels Transfercontrol (TFRCTL) aus.

    Über die Routing-Entries könnte ich auch ein eigenes Programm aufrufen lassen und mit den Daten die ich per RCVMSG abholen muss dann was ganz anderes machen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.368
    @Baldur: ich bleibe bei meinem Einspruch!
    das unter Parameter CMD des SBMJOB eingetragene Command wird vor dem SBMJOB benutzt, um den Übergabebereich zu erstellen und zu füllen (erkennbar daran, dass man Parameter prompten kann etc.)
    Im submitteten Job wird der command dann wieder benutzt um das command processing programm aufzurufen und die Parameter dafür aufzubereiten (erkennbar daran, das validity checker ausgeführt werden etc.)

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.014
    Hallo,

    hier hab ich auch noch einen aktuellen Beitrag von Joe Pluta zu diesem Thema gefunden.

    Practical CL: The 32-Character Solution | CL

    Gruß,
    KM

  9. #9
    Registriert seit
    Nov 2003
    Beiträge
    2.403

Similar Threads

  1. SNDPGMMSG und SBMJOB
    By Dominik Meyer in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 13-01-07, 15:16
  2. JOBQ(*JOBD) oder JOBQ(LIB/JOBQ) an SBMJOB übergeben
    By hww in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 12-12-06, 15:27
  3. SBMJOB und SCDDATE/SCDTIME
    By Luebbert in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 13-09-06, 11:39
  4. sbmjob und ' im Parameter
    By muadeep in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 27-06-06, 11:31
  5. Parameterübergabe CL/RPG
    By mott in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 09-12-05, 09:06

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •