[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    9

    Datenmüll verhindern! Aber wie ??

    Hallo zusammen,

    habe folgendes Problem:

    Ich habe in einem RPG-Prg. eine Variable MSG die eine Länge von 132 hat. Aus einem anderen CL Prg wird diese Variable mit einer Nachricht gefüllt. Diese MSG Variable wird dann als Parameter an eine DDS Datei weitergeleitet.

    Wenn ich jetzt einen query mache zeigt er mir wunderbar den richtigen Parameter an, doch leider auch jede Menge Dateneschrott der gar nicht von mir übergeben wurde!

    Hab bereit MoveL (p) versucht (...mit Leerzeichen auffüllen). Klappt nicht.
    Habe es mit einer zweiten Hilfsvariable probiert! Klappt nicht!
    Es erscheint immer wieder vereinzelte Zeichen hinter dem Parameter.

    Hat jemand einen Tipp für ich? Hab wirklich schon jede Menge ausprobiert. Klappt aber nichts.

    Thx

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    da scheinen abweichende Definitionen der Parameter im Spiel zu sein. Die saubere Lösung ist der Wechsel zu CALLP und die Verwendung von Prototypen.

    mfg

    Dieter Bender

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Oh oh,

    das kann teuer werden, wenn das Zwangspfand für Einwegparameter und unnötigen Datenmüll eingeführt wird.

    Dieter

    PS: sorry, ich konnte wieder mal nicht widerstehen. :-)

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    9
    Was bedeutet denn "Wechsel zu CALLP" ?, mit Prototypen hab ich leider auch noch nicht gearbeitet. Werde mir das auf jeden Fall
    im Buch nachlesen. Befinde mich noch im Anfangsstadium...


    Vielleicht kannst du mir einen kurz dazu was sagen. Wäre nett.

    Thx

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    9
    ....streich das "einen" bitte !


  6. #6
    Registriert seit
    Oct 2003
    Beiträge
    192
    Mit CALLP meint Bender bestimmt den Einsatz von Prozeduren unter RPG IV (RPGLE).

    Es dürfte aber auch einfach reichen wenn du nachprüfst ob dei Variable die übergeben wird im aufrufenden Programm genau so lang ist wie im aufgerufenen Programm.

    Rince

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    am einfachsten und konkretesten kann man Hinweise geben, wenn man die Quellen sieht. Wo ist der Aufruf, was wird aufgerufen, welcher Fehler tritt auf.
    Zu den Prototypen noch ein paar Bemerkungen:
    In einem Prototyp kann man die Eigenschaften von Parametern genauer beschreiben als in ENTRY PLIST Einträgen oder im CL direkt möglich. Das ist insbesondere dann erforderlich, wenn Literale übergeben werden, oder ein SBMJOB erfolgt, oder Command Strings an QCMDEXC übergeben werden und "Datenmüll" Probleme damit vorprogrammiert sind.
    Hier ist es auch sinnvoll mal in die Bedienerhilfe des OS/400 Befehls CALL zu sehen.

    mfg

    Dieter Bender

    PS: ein Kurzkurs Prototypen und CALLP ist in so einem Forum leider nicht so ohne weiteres möglich.

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

    ich bin derselben Meinung wie Rincewind. Du solltest prüfen, ob die Variablen in beiden Programmen die gleiche Länge hat. Wenn der Parameter im rufenden CL-Programm nämlich kürzer ist als im gerufenen RPG-Programm, wird der Rest des Feldes mit "Müll" aufgefüllt.

    Gruß,
    KM

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    dem ist leider nicht so, was hinter der deklarierten Länge kommt, ist kein "Müll", sondern Speicherbereich des aufrufenden Programmes.

    Dieter Bender

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Genau, und wenn man den Bereich auch noch ändert, KANN es fürchterlich knallen, es muss aber nicht sofort sein.

    Dies ist genauso wie diese ominösen "Sicherheitslücken" in Windoof, Überschreibungen von Puffern (hier Parameterfelder) mit längeren Informationen als im Programm definiert.

    Bei der AS/400 ist dies (Gott sei Dank) auf den Job beschränkt !!
    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

Similar Threads

  1. Einträge in Joblog verhindern
    By Jamikl in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 28-02-05, 11:49
  2. TCP/IP-Leitwege - Dynamisches Eintragen verhindern?
    By mott in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 18-09-02, 15:42

Berechtigungen

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