[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2006
    Beiträge
    3

    Question DSPF-Name als Variable nutzen

    Hallo,
    ich möchte folgendes lösen und stoße dabei auf ein Problem.
    Name des DSPF bekannt, Recordnamen nicht. Name der die DSPF nutzenden PGM nicht bekannt. Über eine Funktion sollen die Records der DSPF angezeigt werden (ähnlich der strsda 3 - Funktion - aber eben variabel). Was habe ich gemacht:
    Screen für Name des DsPF und LIB: OKAY. Anschließendes DSPFD *members in einen outfile: ok. Rpg programm zum Auslesen dieses Outfiles und anzeige der Recordnamen in einem SFL: ok. Und nun kommt es: ich wähle einen (oder mehrere) Record(s) aus und möchte diesen Namen als Variable an ein RPG? CL? PGM übergeben. Nur: bei dem DCLF-cmd (oder im RPG in der F-Zeile) sind keine Variablen erlaubt. Am einfachsten wäre ja der strsda 3 cmd incl variablen.
    So stehe ich also da in meinem Hemd .. hat jemand einen Tipp? Vielleicht bin ich ja auch auf dem so genannten Holzwege und es gibt eine viel einfachere oder gänzliche andere Lösung.
    Dank im Voraus

  2. #2
    Registriert seit
    Aug 2004
    Beiträge
    923
    moin moin,

    OVRDSPF vor Programmcall wäre vermutlich eine Lösung.

    k.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.266
    Variable Formatnamen sind im ILE/RPG und CLP leider nicht möglich !

    Hintergrund:
    Die Kommunikation zwischen Programm und Datei funktioniert über E/A-Puffer, auf die man in RPG/CLP keinen Zugriff hat.

    Zur Compile-Zeit werden die Variablen für die E/A's deklariert (I-/O-Bestimmung). Durch diese Deklaration wird der Pufferaufbau definiert (siehe auch DSPFFD).

    Alle Variablen der E/A's sind sog. Single-Variablen !
    Durch Deklaration eines Namens in einer DS wird erst dann der Bezug zu dieser DS hergestellt. Dabei kann es bei numerischen Variablen sogar zu Typumwandlung kommen (P->S, S->P).

    Zum Zeitpunkt des READ/EXFMT(I) wird das Satzformat geprüft und durch generierte Move's aus dem Puffer in die Variablen übertragen.
    Zum Zeitpunkt des WRITE/EXFMT(O) wird durch Angabe des Formatnamens der Pufferaufbau ausgewählt und der Compiler kann an dieser Stelle die Move's aus den Variablen zum E/A-Puffer generieren.
    Deshalb ist beim WRITE/EXFMT der Formatname erforderlich, beim READ kann der Dateiname verwendet werden.

    Ist dann zur Laufzeit ein Satzformat nicht bekannt kommt es beim READ ggf. zu Laufzeitfehlern.

    Anders sieht es dann in COBOL/C++ aus, da hier beim READ/WRITE mit den Puffern direkt gearbeitet werden kann.
    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

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.288
    Hallo,

    wie Baldur bereits angemerkt hat, muss das Format zur Compiletime bekannt sein, da bleibt dann eigentlich nur generieren, sprich ein entsprechendes Zugriffsmodul generieren und aufrufen, das kann man sich dann auch wegspeichern und bei Wiederholung direkt aufrufen (auf LVLCHK achten!).

    mfg

    Dieter Bender

    Zitat Zitat von hh-mi
    Hallo,
    ich möchte folgendes lösen und stoße dabei auf ein Problem.
    Name des DSPF bekannt, Recordnamen nicht. Name der die DSPF nutzenden PGM nicht bekannt. Über eine Funktion sollen die Records der DSPF angezeigt werden (ähnlich der strsda 3 - Funktion - aber eben variabel). Was habe ich gemacht:
    Screen für Name des DsPF und LIB: OKAY. Anschließendes DSPFD *members in einen outfile: ok. Rpg programm zum Auslesen dieses Outfiles und anzeige der Recordnamen in einem SFL: ok. Und nun kommt es: ich wähle einen (oder mehrere) Record(s) aus und möchte diesen Namen als Variable an ein RPG? CL? PGM übergeben. Nur: bei dem DCLF-cmd (oder im RPG in der F-Zeile) sind keine Variablen erlaubt. Am einfachsten wäre ja der strsda 3 cmd incl variablen.
    So stehe ich also da in meinem Hemd .. hat jemand einen Tipp? Vielleicht bin ich ja auch auf dem so genannten Holzwege und es gibt eine viel einfachere oder gänzliche andere Lösung.
    Dank im Voraus
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.266
    Wie wärs da mit COBOL oder C++ ?
    Den LVLCHK kann man per OVRDSPF wegbekommen.
    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. Variable Ettiketenlänge
    By rguenzel in forum NEWSboard Drucker
    Antworten: 5
    Letzter Beitrag: 18-01-07, 13:38
  2. Variable Zahlenkonvertieren
    By Xanas in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 28-08-06, 12:21
  3. cl declare variable
    By TARASIK in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 10:09
  4. Fehlerzeile in DSPF
    By Freezer in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 18-08-06, 08:11
  5. String mit HexInhalt muss als Hex-Wert in Variable
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 16-05-06, 07:45

Berechtigungen

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