[NEWSboard IBMi Forum]
Seite 3 von 4 Erste ... 2 3 4 Letzte
  1. #25
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Danke für deinen Versuch.
    Vielleicht erbarmt sich ja noch ein V7R2-Kandidat;-).

    Der SQL stammt aus der Hauptquelle. Ich habe die Umwandlung im Dialog angeschmissen und konnte ja das Ergebnis der Tempfiles in QTEMP überprüfen.
    Wie gesagt, der Spool zeigte den kompletten SQL aber den Fehler ab Spalte 80.
    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

  2. #26
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Wahrscheinlich ist genau das Problem im APAR SE63525 beschrieben.
    http://www-01.ibm.com/support/docvie...id=nas2SE63525

    Dort steht auch, welches PTF für welche Version zur Behebung erforderlich ist:
    PTFs Available
    R710 SI58914 6120
    R720 SI58916 6127
    R730 SI59847 6085

  3. #27
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nein, dies kann es nicht sein, da die Quelle des RPG-Procompilers sauber erstellt wird.
    Es fehlte nichts, es wurde nichts abgeschnitten.
    Es werden ja nicht generell alle SQL's abgelehnt sondern nur SQL's mit einem CASE-Ausdruck.
    Ich habe in einer Quelle einen SQL komplett so weit wie es ging nach rechts verschoben, er wurde problemlos compiliert.
    Obiger SQL mit dem CASE-Ausdruck wurde jedoch ab Spalte 80 abgelehnt.
    Dies ist aber Sache des SQL-Compilers und nicht des RPG-Precompilers für die Auflösung der Copy/Includes.
    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

  4. #28
    Registriert seit
    Oct 2014
    Beiträge
    28
    Was bei mir z.B. auftritt ist das Problem, dass bei Subprocedures ich auf den (umbenannten) Recordnamen nicht zugreifen kann. Egal ob RPGLE/Free oder "normales" RPGLE. Außerdem wird mir, wenn ich mit dcl-s ein standalone Feld definiere diese im nachfolgenden Code nicht mit der Autocomplete Funktion angezeigt, bevor ich es nicht einmal verwendet habe. Sprich ich muss den Namen des Feldes mindestens einmal in der Subprozedur selber hingeschrieben haben, damit mir der Editor das Feld in der Autocomplete anzeigt. Ist bei kurzen Variablen nicht weiter tragisch, sind eh hingeschrieben, bevor ich überhaupt Strg+Space gedrückt und ausgewählt habe. Aber gerade bei längeren Variablen oder auch DS, die als likerec(recordformat) definiert sind und dessen Unterfeldern, ist das schon ein wenig nervig. Hatte dazu bereits auf developerworks einen REF Eintrag geschrieben (vor mehreren Monaten!). Bisher keine Antwort/Reaktion darauf.

  5. #29
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    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.

  6. #30
    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).

  7. #31
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    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

  8. #32
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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

  9. #33
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    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.

  10. #34
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Noch ein Hinweis, falls jemand noch nicht so vertraut mit RDi ist:
    Man kann sich auch eigene Schablonen hinterlegen, die man dann mit Strg + space per Autocomplete in seinen Code einfügen kann.

    Man könnte sich also z.B. Schablonen hinterlegen, deren Name immer mit "tool" beginnt. Wenn ich dann im Code eine von meinen Schablonen benötige, tippe ich einfach tool ein und drücke Strg + space. Dann bekomme ich meine Schablonen angeboten.

    Wir haben da einige Standard-Schablonen für uns definiert, die uns z. B. die Programm-Status-Datenstruktur an der Cursorposition in den Code einfügen oder Schablonen, die uns die komplette Schleifenkonstruktion eines SQL-Cursors einfügen.

    Die Schablonen kann man exportieren und seinen Kollegen damit zur Verfügung stellen.

    Wer es noch nicht gefunden hat: Über Fenster -> Benutzervorgaben -> Ferne Systeme -> LPEX Editor für ferne Systeme -> IBM i parser -> ILE RPG -> Schablonen
    kommt man an die Definitionen der Schablonen.

  11. #35
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das Problem ist ja, dass sich bei STRG+Space gar nichts tut.
    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

  12. #36
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Man kann nochmal unter Fenster -> Benutzervorgaben -> LPEX Editor -> Tastenaktionen des Benutzers
    schauen, ob für Strg + Space vielleicht eine Tastenaktion festgelegt worden ist, die das Standardverhalten übersteuert.

    Sonst hilft wohl nur eine Neuinstallation.

Similar Threads

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

Berechtigungen

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