[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2005
    Beiträge
    34

    DDS für logische Datei

    Hallo,

    ich hab mal wieder eine kurze Frage:

    In einer vorhandenen physischen Datei gibt es u.a. ein numerisches Feld ACDATU 6S 0. Dieses Feld enthält das Datum in der Form TTMMJJ.

    Nun muss ich diese Datei mit einem RPGLE-Programm nach Datum sortiert abarbeiten. Dazu bräuchte ich das datum in der Form JJJJTTMM.

    Ich hab jetzt schon verschiedenes versucht um mir eine entsprechende logische Datei zusammenzustellen. Mein letzter Versuch sieht folgendermaßen aus:

    Code:
    A            JH             2S 0I      VALUES(20)             
    A            TT             2S 0I      SST(ACDATU 1 2)        
    A            MM             2S 0I      SST(ACDATU 3 2)        
    A            JJ             2S 0I      SST(ACDATU 5 2)        
    A            ACDATU8            I      CONCAT(JH JJ MM TT)    
    A          K ACDATU8
    Das funktioniert so nicht ... es erscheinen mehrere CPD-Meldungen:

    CPD7554 - Schlüsselwort nicht gültig
    CPD7926 - Feld nicht gefunden
    CPD7948 - Name des Schlüssel-, ... -Felds nicht gefunden


    Das Format der physischen Datei ist mir vorgegeben und kann ich (leider) nicht ändern.

    Hat jemand eine Idee, wie ich die logische Datei definieren muss, damit das funktioniert ?

    Vielen Dank im voraus.

    Gruß

    KaFi

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.300
    Mehrere Ursachen:

    VALUES ist nur eine Prüffunktion für die Definition in DSPF's und füllt die Variable nicht.
    Ein Schlüsselwert für Konstante gibts auch nicht.

    SST geht nicht auf gepackten Feldern.
    Ggf. funktioniert CONCAT auch mit nur einem Feld, so dass du das gepackte in zoned wandeln kannst:

    ACDATZ I CONCAT(ACDATU)
    ACJJ I SST(ACDATZ 5 2)
    ACMM I SST(ACDATZ 3 2)
    ACTT I SST(ACDATZ 1 2)

    ACDAT6 I CONCAT(ACJJ ACMM ACTT)

    Besser wäre aber wohl eine View und das bearbeiten mit SQL:

    substr(digits(ACDATU), 5, 2) concat
    substr(digits(ACDATU), 3, 2) concat
    substr(digits(ACDATU), 1, 2) concat
    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
    Mar 2002
    Beiträge
    5.294
    ... die 20 könnte man sich natürlich als Feldinhalt aus einer anderen Datei holen... (Datei Konstanten anlegen, mit Feld Jahrhundert und einem Satz und da steht dann im Feld Jahrhundert die 20 drin...)
    Wenn das mit dem SST nicht geht, wg. gepackt, dann könnte man das immer noch mit einer Zuordnungstabelle (die hat dann beide Huddelfelder), die man mit joined toppen.

    D*B,
    der nicht versteht, was sich Entwickler bei solchem Huddel gedacht haben

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Mehrere Ursachen:

    VALUES ist nur eine Prüffunktion für die Definition in DSPF's und füllt die Variable nicht.
    Ein Schlüsselwert für Konstante gibts auch nicht.

    SST geht nicht auf gepackten Feldern.
    Ggf. funktioniert CONCAT auch mit nur einem Feld, so dass du das gepackte in zoned wandeln kannst:

    ACDATZ I CONCAT(ACDATU)
    ACJJ I SST(ACDATZ 5 2)
    ACMM I SST(ACDATZ 3 2)
    ACTT I SST(ACDATZ 1 2)

    ACDAT6 I CONCAT(ACJJ ACMM ACTT)

    Besser wäre aber wohl eine View und das bearbeiten mit SQL:

    substr(digits(ACDATU), 5, 2) concat
    substr(digits(ACDATU), 3, 2) concat
    substr(digits(ACDATU), 1, 2) concat
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.300
    Die Datenhaltung sieht mir verdächtig nach vorherigem Jahrhundert aus.
    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

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.327
    Nach Datum sortiert müßte doch auch so gehen:
    PHP-Code:
    A          R DATF                      PFILE(DATP)
    A            TT                 I      SST(DATUM 1 2)
    A            MM                 I      SST(DATUM 3 2)
    A            JJ                 I      SST(DATUM 5 2)
    A          K JJ
    A          K MM
    A          K TT 

  6. #6
    Registriert seit
    May 2005
    Beiträge
    34

    DDS für logische Datei

    Vielen Dank für eure zahlreichen Antworten.

    Den Vorschlag von Pikachu werde ich nachher mal umsetzen.

    @Fuerchau: Tatsächlich, die Art der Datenhaltung stammt aus dem letzten Jahrhundert ... Nichtsdestotrotz muss ich damit irgendwie klarkommen.

    Gruß

    KaFi

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.300
    Wie gesagt, SST geht nicht bei gepackten Feldern sondern nur bei Zeichen und Zoned.
    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. Query: logische Datei wird nicht verwendet
    By RolfSalzer in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 28-10-05, 14:27
  2. Sortierung Logische Datei
    By Stefan12 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 12-05-05, 14:57
  3. Dynamische Logische Datei
    By dd3tj in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 20-01-05, 14:55
  4. Logische Datei mit Gruppierungen
    By THK in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 15-12-04, 07:40
  5. Berechtigung physische versus logische Datei
    By Andreas Huyer in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-01-02, 07:15

Berechtigungen

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