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

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.205
    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.205
    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

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
  •