[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2002
    Beiträge
    792

    Feldinhalten bleiben in Satzformat stehen

    Hallo,

    ich habe ein Serviceprogramm mit zwei Modulen und ein PGM (PGM1) das sich derer bedient. PGM1 ruft MDL1 des Serviceprogramms auf. Dieses öffnet ein DSPF mit einem EXFMT auf ein bestimmtes Satzformat (SFMT1). Bei einer bestimmten F-Taste wird von MDL1 das MDL2 aufgerufen. Dieses öffnet die Bildschrimdatei per Open und macht ein EXFMT auf SFMT2. Wird MDL2 beendet und noch einmal von MDL1 aufgerufen, habe alle Felder aus SFTM2 noch die Werte vom letzen Start. Erst wenn ich PGM1 beende und neu starte kann ich MDL2 wieder 1 Mal mit leeren Variablen aufrufen.
    MDL2 wir aber immer! mit Close *ALL und *INLR beendet. Ich dachte eigentlich damit würde ich auch die Felder von SFMT2 initalisieren.
    Hat jemand einen Tip für mich.

    Gruß

    Sascha

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Module interessieren sich nicht für *INLR beim Return !
    Mach einfach ein CLEAR auf das Satzformat.
    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
    Apr 2002
    Beiträge
    792
    Zitat Zitat von Fuerchau
    Module interessieren sich nicht für *INLR beim Return !
    Mach einfach ein CLEAR auf das Satzformat.
    Hi,

    danke für die fixe Antwort. Ich werd's gleich mal versuchen.

    Gruß

    Sascha

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Zitat Zitat von Fuerchau
    Mach einfach ein CLEAR auf das Satzformat.
    Oder ein RESET. Das müsste auch gehen ...

    Gruß
    Pikachu

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    RESET unterscheidet sich von CLEAR dadurch, dass Valriablen durch *INZSR vorbelegt werden können und somit auf diesen Stand zurückgesetzt werden können.
    Allerdings ist dies vorsichtig anzuwenden, da z.B. durch Copystrecken in der *INZSR der tatsächliche Inhalt ggf. nicht gewährleistet ist.
    Clear löscht auf jeden Fall entsprechend dem Feldtyp.
    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

  6. #6
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Zitat Zitat von Fuerchau
    Mach einfach ein CLEAR auf das Satzformat.
    Hallo,

    ich hatte es übrigens schon mal, dass der CLEAR auf das Satzformat nicht griff.
    Das lag vielleicht daran, dass ich zusätzlich externe DS über diese Datei definiert hatte?

    Wie auch immer: Meine Lösung siehe unten - wobei ich nicht schlüssig erklären kann, warum es funktioniert.

    Code:
     
    Fsslstd	if   E		   k disk	rename(sslSTDf1: sslSTDr0)  
    ... 
    D dsSSLSTD	  E DS				  extname(SSLSTD)			   
    D a$SSLSTD	  E DS				  extname(SSLSTD)	prefix(a$) 
    ...
     
     
    C*** reicht nicht!  clear				   SSLSTDr0   
    C				   clear				   a$SSLSTD   
    C				   MOVE	  a$SSLSTD	  dsSSLSTD



    Gruß
    Christian

  7. #7
    Registriert seit
    Oct 2003
    Beiträge
    192
    Hi,

    Bei CLEAR von Dateien....

    Klappt nur bei Dateien die Update / Output geöffnet sind.
    Gibt auch einen Hinweis im Wandlungsprotokoll (nicht kritisch, aber halt blöd wenn man sich drauf verlässt).

    Gruss

    Rince

    /edit/
    Subfile Clear geht natürlich immer

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Bei Dateien werden sog. Pseudo-DS generiert, die nur die Felder der Eingabeformate enthält. Reine Ausgabe-Felder findet man in den generierten O-Bestimmungen (Umwandlungsliste).

    CLEAR/RESET wirkt aber nur auf DS !

    Nun macht man sich den Vorteil von RPG (ohne qualified) zu Nutze, dass jedes Feld im Programm nur genau 1 Mal vorhanden ist.
    Definiert man nun eine externe DS, die alle Felder der I/O-Bestimmungen enthält, funktioniert der CLEAR nun.
    Da auch Namen im RPG eindeutig sein müssen, darf es keine Namensgleichheit zwischen Datei-Formatname und DS-Namen geben. Welchen man von beiden umbenennt spielt dabei keine Rolle.

    Es gibt dann nur Probleme, wenn man die gleichen Feldnamen in mehreren Formaten benötigt/verwendet, da ja ein Feld wiederum nur 1 Mal im gesamten Programm und somit nur in 1 DS vorkommen kann.
    Mittels I-Bestimmungen kann ich ja Eingabefelder umbenennen, leider habe ich noch keine Möglichkeit gefunden, Felder in O-Bestimmungen (nämlich die automatischen) umzubenennen.
    Für DISK-Dateien kann ich dies mittels Updatefile (und Pseudo Read/Writes) noch regeln. Bei Printer/Display-Files kann ich das nun mal leider nicht.
    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. Sichern Satzformat
    By malzusrex in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 26-03-09, 17:37
  2. Subfilewindow und Satzformat mit Funktionstasten???
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 12-10-05, 13:17
  3. SQL - Create Table X/Y Angabe Satzformat
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 05-11-04, 15:17
  4. Satzformat
    By RPG IV-Junior in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 28-05-04, 14:40
  5. ganzes Satzformat in Variable ?
    By hpw in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 15-10-01, 13:23

Berechtigungen

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