View Full Version : Progamm interne Tabelle in RPGIV definieren
Hallo,
habe Probleme mit der Definition einer programm internen ladbaren Tabelle
**
01Januar
02Februar
03März
04April
usw.
Wie muss die in den D-Bestimmungen definiert werden
Stehe gersde auf dem Schlauch.
Danke
RobertMack
19-08-16, 09:02
D MONAT S 20 DIM(12) CTDATA PERRCD(1)
**
Januar
Februar
März
Die Tabelle sollte aber so aussehen
01Monatsname
Es ist nur ein Beispiel
RobertMack
19-08-16, 09:21
Wozu?
MyMonatNum = %Lookup(%Trim(String):MONAT:1);
MyMonatNam = MONAT(MyMonatNum);
Was ich an internen Tabellen hasse ist, dass die Informationen am Ende der Quelle stehen und eine nach meinem Geschmack illustere Syntax haben.
Deshalb definiere ich i.d.R. globale/locale Datenstrukturen, die direkt initialisiert werden und innerhalb der Quelle nicht verändert werden. (...ich weiß ist nicht das gleiche, aber m.E. einfacher zu handeln und mit den richtigen Namenskonventionen sollte auch der Kollege solche Struktueen nicht überschreiben:
DCL-DS ConstDSMonat Qualified;
*N Zoned(2) inz(1);
*N Char(10) inz('Januar');
*N Zoned(2) inz(2);
*N Char(10) inz('Februar');
...
Arr Dim(12) Pos(1);
ArrNum Zoned(2) Overlay(Arr);
ArrChar Char(10) Overlay(Arr: *Next);
END-DS;
Birgitta
Dschainers
19-08-16, 09:26
Ich hab mal was aus einem Uraltprogramm rausgeholt:
D USn S 3 DIM(11) CTDATA PERRCD(1)
D UKn S 16 DIM(11) ALT(USn)
** USn + UKn UMSATZ
0321771000000000000
0331776000000000000
0351775000000000000
0361570000000000000
0371575000000000000
0381571000000000000
0391577000000000000
03F1561000000000000
Oder vielleicht so?
DMONATE DS
DARRINZ INZ('01Januar +
D 02Februar +
D 03März +
D 04April +
D 05Mai +
D 06Juni +
D 07Juli +
D 08August +
D 09September +
D 10Oktober +
D 11November +
D 12Dezember ')
DARR OVERLAY(ARRINZ) DIM(12)
DARRNUM 2S 0 OVERLAY(ARR)
DARRCHAR 10A OVERLAY(ARR:*NEXT)
Oder vielleicht so?
DMONATE DS
DARRINZ INZ('01Januar +
D 02Februar +
D 03März +
D 04April +
D 05Mai +
D 06Juni +
D 07Juli +
D 08August +
D 09September +
D 10Oktober +
D 11November +
D 12Dezember ')
DARR OVERLAY(ARRINZ) DIM(12)
DARRNUM 2S 0 OVERLAY(ARR)
DARRCHAR 10A OVERLAY(ARR:*NEXT)
Das klappt bei gezonten und alphanumerischen Feldern mit fixer Länge. Bei gepackten Feldern und/oder Feldern mit variabler Länge wird diese Schreibweise problematisch.
Birgitta
Das aus dem Uraltprogramm ist das was ich in diesem Fall brauche. Danke.