View Full Version : 2 Bildschirmdateien in einem RPG-Programm
Hallo zusammen,
ich möchte folgendes realisieren:
Ich habe ein RPG-Programm. In diesem Programm ist eine WORKSTN "XY" in den F-Bestimmungen mit u.a. USROPPN und EXTFILE definiert.
Das Keyword EXTFILE wird über eine Variable gefüttert, die ich in der Routine *INZSR fülle. Je nach Benutzer soll eine andere Bildschirmdatei "geladen" werden.
Jetzt mein Problem:
Die Bildschirmdateien heißen zwar unterschiedlich (logisch), z.B. "TESTFM" und "TEST1FM", enthalten jedoch namenstechnisch die gleichen Formate.
Wie bekomme ich es also hin, dass je nach Benutzer eine andere DSPF "geladen" wird, wobei die DSPFs die gleichen Formate beinhalten. Mit "rename" könnte ja vielleicht was gehen, allerdings wäre mir dies zu aufwendig. Vielleicht hat einer eine bahnbrechende Idee?
Schon jetzt vielen Dank für die Hilfe!
Da hast du leider schlechte Karten.
EA-Operationen werden in RPG an den Formatnamen gebunden.
Dies erfolgt bereits zur Compilezeit!
Über den Formatnamen zur Compilezeit wird der richtige File-Descriptor dann gewählt.
Deshalb ist der Formatname auch nicht in einer Variablen erlaubt.
2 identische Formatnamen in unterschiedlichen Dateien erfordern nun mal das umbenennen.
Dies ist aber ja nur eine einmalige Aktion damit der Compiler Bescheid weiß.
Wenn du es voll dynamisch benötigst, musst du leider auf COBOL ausweichen.
In COBOL werden EA-Operationen über den Datenamen (Input) und Satznamen (log. Name der FD) bestimmt. Für DSPF/PRTF gibt es die Ergänzung FORMAT. Hier kann der Name als Konstante oder Variable verwendet werden.
Sind die Formatebenen-IDs der gleichnamigen Formate beider Dateien identisch?
Hast Du's schon mal mit Überschreiben versucht?
OVRDSPF (Overide Display File) vor dem Öffnen ausführen.
M.E. sollte das klappen, wenn die Display-Files die gleichen Formate und innerhalb der Formate die gleichen Feld-Namen beinhalten.
Birgitta
Mit dem OVR hat dies nun überhaupt nichts zu tun.
Der Compiler ordnet sich zu jedem Formatnamen den Dateinamen zu.
Bei doppelten Formatnamen gibt's einen Compiler-Fehler und keine Programmerstellung!
Also muss ich eine Umbenennung durchführen.
Somit weiß der Compiler nun, bei welchem Format welche Datei gemeint ist.
Bei den Eingabe-Befehlen kann ich entweder Datei- oder Formatnamen angeben.
Bei den Ausgabe-Befehlen muss ich aber das Format angeben, ein Dateiname ist nicht erlaubt.
Hierbei wird dann bei Umbenennungen intern wieder das korrekte Format der Datei verwendet da es sonst zu Laufzeitfehlern kommen würde.
Nachtrag:
Wobei ich den Grund für diese Aufgabenstellung nicht nachvollziehen kann.
Die Vorschläge hören sich alle gut an, und ich werde morgen mal ein bisschen testen.
Den Grund kann ich kurz erläutern:
Wir stellen z.Zt. alle unsere Programme auf eine grafische Oberfläche um. Dabei ist es nötig, die DSPF teilweise zu bearbeiten. Da viele Programme/DSPFs aber dauerhaft durch diverse Benutzer gesperrt sind, wollte ich so eine einfache Möglichkeit haben, die Benutzer während der Umstellung auf eine identische "Bildschirmdatei" umzuleiten, um mit der Originaldatei arbeiten zu können.
Das erreichst du am ehesten, wenn du die Arbeits-DSPF's ganz einfach in eine separate Lib stellst und die LIBL anpasst.
Wie soll sich denn das/die Programm/e verhalten, wenn sie es mit 2 DSPF's zu tun haben?
Du müsstest nicht nur die Formate umbenennen sondern auch sämtliche EA-Anweisungen doppeln und per Bedingung entscheiden.
Für wie viele Programme möchtest du das durchziehen?
Überlege da noch mal deinen Ansatz.
dschroeder
28-08-14, 16:00
Da wir auch vor einiger Zeit eine grafische Oberfläche eingeführt haben, würde mich interessieren, mit welchem Produkt ihr das macht und wie eure Erfahrungen sind.
Dieter
holgerscherer
28-08-14, 21:58
Wir stellen z.Zt. alle unsere Programme auf eine grafische Oberfläche um. Dabei ist es nötig, die DSPF teilweise zu bearbeiten. Da viele Programme/DSPFs aber dauerhaft durch diverse Benutzer gesperrt sind, wollte ich so eine einfache Möglichkeit haben, die Benutzer während der Umstellung auf eine identische "Bildschirmdatei" umzuleiten, um mit der Originaldatei arbeiten zu können.
Wenn Dir das zu umständlich ist, könnte ich Dir eine einfache GUI anbieten, bei der das nicht nötig ist. Gerne auch kostenlos bei Bereitschaft, etwas Betatester zu spielen.
-h