[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2009
    Beiträge
    360

    Problem bei Lookup

    Ich steh hier grad aufm Schlauch und weiß nicht weiter.
    ich hab ein compiletimearray den ich durchsuchen will:

    d table1 s 1 dim(36) ctdata perrcd(36)

    c eval int = %lookup(input(i):table1)

    **
    ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890

    Jetzt wirft mir der Compiler die Meldung aus, daß der zweite Parameter von lookup nicht korrekt wäre.
    Jemand eine Idee wo mein Denkfehler ist?

  2. #2
    Registriert seit
    Jan 2003
    Beiträge
    634
    c eval int = %lookup(input(i):table1:1)

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.496
    Bei Compile Time Arrays musst Du die Funktion %TLookupXX verwenden.
    %LookUpXX ist nur für Feldgruppen.
    %TLookup

    Birgitta

  4. #4
    Registriert seit
    Feb 2009
    Beiträge
    360
    Super, vielen lieben Dank!
    Konnte ja auch nur so ne dumme Kleinigkeit sein.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    17.641
    Der Gedankenfehler liegt in folgendem begründet:

    CTDATA
    The CTDATA keyword indicates that the array or table is loaded using compile-time data. The data is
    specified at the end of the program following the ** or **CTDATA(array/table name) specification.

    Der Unterschied zwischen Array und Table liegt im Namen:
    Alle Arrays, die mit "TAB" anfangen sind eine Table:

    Table Names
    The following additional rules apply to table names:
    v A table name can contain from 3 to 10 characters.
    v A table name must begin with the letters TAB.
    v A table cannot be defined in a subprocedure.

    Tables
    The explanation of arrays applies to tables except for the following differences:
    Activity
    Differences
    Defining
    A table name must be a unique symbolic name that begins with the letters TAB.
    Loading
    Tables can be loaded only at compilation time and prerun-time.
    Using and Modifying table elements
    Only one element of a table is active at one time. The table name is used to refer to the active
    element. An index cannot be specified for a table.
    Searching
    The LOOKUP operation is specified differently for tables. Different built-in functions are used for
    searching tables.

    Daher erklärt sich auch, dass Tabelle eben per TLOOKUP bedient werden muss und ein Array-Indexzugriff "Tabelle1(I)" nicht möglich ist.
    Benennst du die Tabelle um "Zeichen", dann gilt wieder %lookup und Arrayindex.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Feb 2009
    Beiträge
    360
    Das schlimme ist ja daß ich das alles mal wusste, aber jetzt 10 jahre nicht aktiv benutzt und schlicht vergessen.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    17.641
    Nun ja, was bei mir generell hängen blieb war: Definiere ein Array (E, DIM) nie mit TABxxx!
    Und das geht einem bei dem Namen "Tabelle" schnell unter, da RPG immer noch case insensitive ist.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

Ähnliche Themen

  1. Probleme mit lookup und Tabellen
    Von harkne im Forum NEWSboard programmierung
    Antworten: 7
    Letzter Beitrag: 11-09-17, 09:10
  2. Free Form von LOOKUP
    Von tarkusch im Forum NEWSboard programmierung
    Antworten: 3
    Letzter Beitrag: 23-02-17, 10:45
  3. %lookup
    Von muadeep im Forum NEWSboard programmierung
    Antworten: 4
    Letzter Beitrag: 13-10-15, 09:50
  4. Antworten: 0
    Letzter Beitrag: 17-11-14, 18:28
  5. SQL-Problem
    Von chrisi im Forum System i Hauptforum
    Antworten: 2
    Letzter Beitrag: 27-02-02, 08:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •