[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2004
    Beiträge
    325

    Angry 36er Umstellung

    Moin Kolleginnen und Kollegen,

    ENDLICH!!!!! wri schaffen unsere /36er ab!!!!!!!!!!

    Wir dürfen (ENDLICH) unsere histerisch gewachsene Warenwirtschaft ablösen. In sich kein Problem. Uns liegt aber ein Problem sehr am Herzen, da dieses Programm ein Schlüsselprogramm zur Übergabe an die DKS-FIBU ist. In einem Programm wird eine Datei an 5! verschiedenen Stellen immer mit dem gleichem Schlüssel gelesen. Jetzt haben wir gedacht wir lösen das aber eine exterrne DS mit einer einer Feldgruppe, da wir 5x mal die gleiche Datensätzte brauchen. Gelöst haben wird das so:

    d OR_Rec E DS ExtNAme(Datei)
    * ================================================== ==========
    d AA_Rec E DS ExtName(Datei)
    d PreFix(AA_)
    d AA_Ds DS LikeDs(AA_Rec) Dim(999)
    * ================================================== ==========
    d BB_Rec E DS ExtName(Datei)
    d PreFix(BB_)
    d BB_Ds DS LikeDs(BB_Rec) Dim(999)
    * ================================================== ==========
    Und so
    weiter

    Gelesen wird die Datei und mit
    MOVE OR_REC AA_DS($Z)
    bis FF_DS($Z)
    die Feldgruppen gefüllt. Im Debug kann man auch z.B. das Feld AA_DS.AA_FELD(1) oder so sehen.

    Wie kann man das Feld jetzt anspechen???

    z.B. EVAL AA_DS.AA_FELD($X) = Neu
    BB_DS.BB_FELD($Y) = Alt
    CC_DS.CC_FELD($X) = 4711 usw???

    Bei der Umwandlung kommt dann immmer:
    Feldgruppe hat zu viele übergangene Indizes; die Bestimmung wird ignoriert.

    Index ist für einen Namen, der keine Feldgruppe ist, nicht zulässig; der Index wird ignoriert.

    Wir stehe da momentan echt auf dem Schlauch!! Vielen Dank im voraus für Eure Hilfe.

    mfg

  2. #2
    Registriert seit
    Jan 2003
    Beiträge
    746
    Moin,

    mit DIM multiplizieren Sie jede Datenstruktur auf 999 Vorkommen ;-)

    Wie genau wollen Sie die eingelesenen Felder verarbeiten? Evtl. ist OCCUR Ihr Freund!

  3. #3
    Registriert seit
    Nov 2004
    Beiträge
    325
    Zitat Zitat von RobertMack Beitrag anzeigen
    Moin,

    mit DIM multiplizieren Sie jede Datenstruktur auf 999 Vorkommen ;-)

    Es kommt bei einzelnen Kunden vor, daß bis zu 800 Sätze da drin sthen

    Wie genau wollen Sie die eingelesenen Felder verarbeiten? Evtl. ist OCCUR Ihr Freund!
    Die Datei hat 45 Felder, davon müssen bis zu 10 geändert werden.

  4. #4
    Registriert seit
    Jan 2003
    Beiträge
    746
    wie geändert? Hab's noch nicht nachvollzogen...

    Feldverwendung/Prüfung/Änderung über die Vorkommen hinweg, z.B. IF AFELD(1) <> AFELD(4)
    oder erst nachdem alle Vorkommen eigens geprüft wurden, z.B.
    DO 5 $I
    $I OCCUR DS
    IF AFELD <> IRGENDWAS, merke $I
    ENDDO
    $I = gesuchtes Vorkommen

  5. #5
    Registriert seit
    Nov 2004
    Beiträge
    325

    So nicht ganz

    Also:

    Programmlauf ALT:

    Datei A wird gelesen (Aktuelles KD-Sortiment)

    Satzauschluß

    Ausgabe 1

    Datei A wird erneut gelesen (Aktuelles KD-Sortiment)

    Satzauschluß

    Ausgabe 2

    Datei A wird nochmal gelesen (Aktuelles KD-Sortiment)

    Satzauschluß

    Ausgabe 3

    usw.

    Unsere Idee ist:

    Datei A wird gelesen (Aktuelles KD-Sortiment)

    Satzauschluß

    Merken 1
    Merken 2
    Merken 3
    usw.

    Aus Merken 1 ($X) weiter
    Aus Merken 2 ($X) weiter
    Aus Merken 3 ($X) weiter
    usw.

    In Merken 2 - 5 wird dann eine weitere Verarbeitung gestartet.

    Von Merken 1 - x sind aber verschieden Felder zu aktualisieren




    Wir wollen eigentlich nur einmal statt fünfmal nach den selben Kriterien lesen.

    Hoffentlich habe ich mich verständlich ausgedrückt

  6. #6
    Registriert seit
    Jan 2003
    Beiträge
    746
    ...leider nicht ;-)

    Ich rate jetzt mal:

    Sie wollen beim Einlesen prüfen, ob ein Satz ausgeschlossen wird oder in eine von vier Gruppen paßt?

    Und dann die vier Gruppen einzeln verarbeiten?

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Wozu überhaupt Indizes? Ihr könnt die einzelnen Felder in den Datenstrukturen doch direkt über ihre Namen ansprechen.

    Nachtrag: Die Datenstrukturen lassen sich mit MOVE OR_REC AA_REC usw. füllen.

  8. #8
    Registriert seit
    Nov 2004
    Beiträge
    325
    Zitat Zitat von Pikachu Beitrag anzeigen
    Wozu überhaupt Indizes? Ihr könnt die einzelnen Felder in den Datenstrukturen doch direkt über ihre Namen ansprechen.

    Nachtrag: Die Datenstrukturen lassen sich mit MOVE OR_REC AA_REC usw. füllen.
    Genau das mache wir. Jetzt wollen wir aber aus der DS nur einzelne Felder haben, also aus DS1(5) das 3 feld, aus DS4(3) das 10 feld usw.

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

    erstmal würde ich die DS quälen, statt Prefix:

    d OR_Rec E DS ExtNAme(Datei)
    * ================================================== ==========
    d AA_Rec E DS ExtName(Datei)
    d qualified
    d AA_Ds DS LikeDs(AA_Rec) Dim(999)
    * ================================================== ==========
    ansprechen kann man die Felder dann per:

    AA_Ds(index).FeldName

    mfg

    Dieter Bender

    PS: Sch... Editor, das qualified muss freilich als Keyword abgelocht werden.

    Zitat Zitat von DKSPROFI Beitrag anzeigen

    d OR_Rec E DS ExtNAme(Datei)
    * ================================================== ==========
    d AA_Rec E DS ExtName(Datei)
    d PreFix(AA_)
    d AA_Ds DS LikeDs(AA_Rec) Dim(999)
    * ================================================== ==========
    Wie kann man das Feld jetzt anspechen???

    z.B. EVAL AA_DS.AA_FELD($X) = Neu
    mfg
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Setze den Index einmal direkt hinter die Datenstruktur (anstelle von hinter das Feld): z.B. EVAL AA_DS($X).AA_FELD = Neu

  11. #11
    Registriert seit
    Nov 2004
    Beiträge
    325
    Zitat Zitat von Pikachu Beitrag anzeigen
    Setze den Index einmal direkt hinter die Datenstruktur (anstelle von hinter das Feld): z.B. EVAL AA_DS($X).AA_FELD = Neu

    VIELEN HERZLICHEN DANK!!!!!!!! Das wars, vielen Dank auch alle anderen Antworten.

Similar Threads

  1. Umstellung von Spiegelung auf Raid
    By Frank.Sobanek in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 14-07-05, 21:58
  2. 36er Rpg nach RPGLE
    By Joe in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 23-06-05, 11:16
  3. Erste Erfahrungen bei der Umstellung auf V5R3 !
    By Kilianski in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 03-11-04, 17:20
  4. Umstellung von 720 aif i5
    By ukoh19 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 22-09-04, 15:29
  5. Umstellung OUTQ-Namen
    By peter.kinne in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 01-09-04, 15:41

Berechtigungen

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