[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Wenn du ein kleines Codebeispiel hast, was bei dir nicht geht, probiere ich gerne mal aus, ob das Autocomplete in meinem RDi geht.

    Bei mir geht die Autocomplete Funktion meistens.

  2. #2
    Registriert seit
    Oct 2014
    Beiträge
    28
    Also ich hab hier mal ein Beispielprogramm:

    DDS Source:
    Code:
         A          R PFA002R
         A
         A            FLD01          2S 0       COLHDG('FELD 01             ')
         A            FLD02         10A         COLHDG('FELD 02             ')
    Inhalt der Datei PFA002P:
    Code:
    *...+....1..
    01Text 1    
    02Text 2    
    03Text 3    
    04Text 4    
    05Text 5    
    06Text 6    
    07Text 7    
    08Text 8    
    09Text 9    
    10Text 10
    Und hier der Programmcode:

    PHP-Code:
    **free
        ctl
    -opt decedit('0,'datedit(*dmydftactgrp(*nooption(*nodebugio:*srcstmt:*nounref);

        
    dcl-pr GibText char(10);
          $
    1id zoned(2) const;
        
    end-pr;

        
    dcl-s i int(3);
        
    dcl-s text char(10);

        
    text = *blanks;
        
    5;
        
    text GibText(i);
        
    dsply text;

        *
    inlr = *on;

        
    // Subprozedur
        
    dcl-proc GibText;
          
    // Datei und Host-DS einbinden
          
    dcl-f pfa002p disk usage(*input);
          
    dcl-ds pfa002rDS likerec(pfa002r); // "pfa002r" wird im likerec auch nicht erkannt :(
          // Prozedure-Interface
          
    dcl-pi GibText char(10);
            $
    1id zoned(2) const;
          
    end-pi;
          
    // Lokale Felder
          
    dcl-s x1id like($1id); // $1id wurde bereits verwendet -> wird auch vorgeschlagen
          
    dcl-s result like(pfa002rDS.fld02); // Teilweise wurde hier schon die Autocomplete verweigert
          // Beginn der Programmlogik
          
    x1id = $1id// Muss selber tippen, da x1 noch nicht verwendet wurde
          
    read pfa002r pfa002rDS// Auch hier musste ich den Namen selber schreiben. Vorgeschlagen wird nur der Dateiname, nicht der Satzformatname
          
    dow (not %eof(pfa002p));
            if (
    pfa002rDS.fld01 x1id); // Ab hier kannte RDi den Namen "pfa002rDS"
              
    result pfa002rDS.fld02;
              
    leave;
            endif;
            
    read pfa002r pfa002rDS;
          
    enddo;

          return 
    result;
        
    end-proc
    Probier mal das ganze nachzustellen/nachzuschreiben. Vielleicht hast Du ja auch bei den Kommentierten Stellen das Problem.
    So, wie das Programm oben aussieht (bzw eigentlich die Subprozedur "GibText", bau ich im Normalfall alle meine Unterprozeduren auf (Zuerst die Datei, dann Host-DS, PI, Lokale Felder und dann erst der Programmcode).

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Ich habe das bei mit probiert. Bei mir gibt es aus meiner Sicht keine Probleme mit dem Autocomplete.

    Bei mir ist es folgendenmaßen:

    In den folgenden Zeilen wird beim dcl kein Inhalt beim Autocomplete vorgeschlagen:
    Code:
    // Datei und Host-DS einbinden
      dcl-f pfa002p disk usage(*input);        
      dcl-ds pfa002rDS likerec(pfa002r); // "pfa002r" wird im likerec auch nicht erkannt :(
    Das ist auch OK, denke ich. RDi kann ja nicht wissen, welche Datei du irgendwann mal einbinden willst. Beim Likerec wird bei mir auch nur die allgemeine Hilfe "Likerec(record-name)" vorgeschlagen. Hier könnte RDi tatsächlich intelligenter sein. Schließlich steht ja links der Dateiname.

    Beim Rest des Codes (also ab //Lokale Felder) kommt beim mir überall der korrekte Autocomplete. Allerdings wird bei read der Dateiname, nicht der Recordname vorgeschlagen. Da könnte RDi vielleicht beides vorschlagen, denke ich. Es wäre ja beides zulässig.

    Noch ein paar Anmerkungen zum Code:
    Die Prototype-Deklaration
    Code:
    dcl-pr GibText char(10);
      $1id zoned(2) const;
    end-pr;
    kannst du dir sparen, denke ich. Das macht der Compiler von selber.

    Und die dcl-Reihenfolge innerhalb der Procedure finde ich ungewöhnlich (ist aber natürlich Geschmackssache): Bei mir kommt nach der declaration der Procedure immer direkt die pi-Deklaration, da dass ja die Kommunikation der Procedure nach außen beschreibt.
    Erst danach kommen beim mir Dateien und lokale Variablen. Es ist jedenfalls nicht so wie früher, dass man zwingend erst die Dateien und danach den Rest deklarieren muss. Es sind ja alles dcl- Anweisungen. Und die sind (meines Wissens nach) gleichrangig.

    Gruß,
    Dieter

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ich habe nun auch schon mit ein paar Kollegen gesprochen.
    RDi ist sehr empfindlich, was das Autocomplete angeht.
    Da ist es unerheblich, ob ich die Definitionen in einer Copystrecke oder im Programm habe.
    Hier mal eine neue dcl-ds extname() hinzugefügt und schon schweigt sich RDi wieder aus.
    Gerade wenn man mit qualified und langen Namen (alias) umgeht, was die Leserlichkeit verbessert, scheitert RDi immer wieder und man muss sich mehrere Quellfenster aufmachen um die Namen per markieren->strg+c->fenster wechseln->strg+v zu verwenden.

    Das Ganze passiert mit V7R2 und RDi 9.6.0.0.

    Auch was die Typsicherheit des Compilers angeht, so bin ich nun mal auf die Nase gefallen:
    Einer Prozedur wird eine Qualified-DS als Parameter per CONST übergeben.
    Der Compiler prüft nun nicht, wie gedacht, ob die DS als Struktur korrekt angegeben wird sondern behandelt die DS als Char. Somit konnte es passieren, dass ich die falsche DS als Parameter übergeben habe und das Programm somit aus der Kurve flog.
    Durch CONST gibt es ja keine Längenprüfung geschweige denn eine Struktur-Prüfung, da ja eine Kopie des Übergabewertes in ein CHAR stattfindet und weitergerouted wird.

    Mit welcher Änderung ich nun allerdings RDi wieder zu Autocomplete bewegen soll, entzieht sich mir nun.
    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
    Jan 2012
    Beiträge
    1.199
    Ich gebe dir recht, dass RDi nicht völlig stabil beim Autocomplete ist. Aber ich finde, die Stabilität ist in den letzten Versionen immer besser geworden. In den allermeisten Fällen haben wir keine Probleme damit. Wir arbeiten fast ausschließlich mit qualified und langen Feldnamen.

    Aber bitte mal die neueste Version einspielen: 9.6.0.5. Das ist nur ein Update. Dauert vielleicht 10 Minuten. Man muss nichts neu einrichten, soweit ich mich erinnere.

Similar Threads

  1. Ungültige Bedingung für Heap Space
    By lorenzen in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 07-05-03, 11:46
  2. Antworten: 1
    Letzter Beitrag: 05-10-01, 08:42

Berechtigungen

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