-
Alternative für MoveA im Frei-Format
Hallo zusammen,
ich suche eine Alternative für den OpCode MOVEA, welcher im Frei-Format nicht mehr verfügbar ist.
Diesen setze ich momentan noch ein, um ein Datenbankfeld (30A) in ein Array zu schieben.
Das Datenbankfeld beinhaltet eine Berechtigungsstruktur (z. B. 'JJJJJNNJJJNNNNJJJJNNNNNNNNNNNN')
... ich weiß ... ist nicht auf meinem Mist gewachsen, aber ich muss jetzt damit weiterarbeiten :-(
Ich behelfe mir z. Zt. mit folgendem Code
...
// Berechtigungsstruktur des angemeldeten Benutzers auslesen
chain user v#taub00;
if %found(v#taub00);
/End-Free
C MoveA TabFub JaNein
/Free
endif;
...
Hat jemand ne elegante Lösung für mich ??
-
der Möglichkeiten sind da viele, array mit Alfa feld überlagern und schnöde Zuweisung (was ich nicht mag, wg. verdeckter Programmierung, oder das Feld mit %subst verarbeiten, was auch in einer Schleife geht.
D*B
 Zitat von Tobse77
Hallo zusammen,
ich suche eine Alternative für den OpCode MOVEA, welcher im Frei-Format nicht mehr verfügbar ist.
Diesen setze ich momentan noch ein, um ein Datenbankfeld (30A) in ein Array zu schieben.
Das Datenbankfeld beinhaltet eine Berechtigungsstruktur (z. B. 'JJJJJNNJJJNNNNJJJJNNNNNNNNNNNN')
... ich weiß ... ist nicht auf meinem Mist gewachsen, aber ich muss jetzt damit weiterarbeiten :-(
Ich behelfe mir z. Zt. mit folgendem Code
...
// Berechtigungsstruktur des angemeldeten Benutzers auslesen
chain user v#taub00;
if %found(v#taub00);
/End-Free
C MoveA TabFub JaNein
/Free
endif;
...
Hat jemand ne elegante Lösung für mich ??
-
 Zitat von BenderD
der Möglichkeiten sind da viele, array mit Alfa feld überlagern und schnöde Zuweisung (was ich nicht mag, wg. verdeckter Programmierung, oder das Feld mit %subst verarbeiten, was auch in einer Schleife geht.
D*B
Hallo BenderD und vielen Dank für die rasche Antwort.
Die Schleife mit %subst ist zwar ne Möglichkeit, aber wirklich eleganter, als meine Nachgabe der Compiler-Schikane mit /End-Free und /Free ist das auch nicht.
Es kann doch kein Fortschritt einer Programmiersprache sein, wenn ich für etwas eine Schleife programmieren muss, wofür mir zuvor ein Befehl/Statement genügte !?!?!
Ein adäquate BiF vielleicht ??
-
mit dem %subst war doch nicht gemeint das array zu füllen, sondern selbiges zu entfernen und den String direkt mit %subst anzufassen
D*B
BTW: manchmal kann es durchaus Sinn machen ein Statement durch mehr Code zu ersetzen, wenn letzteres besser lesbar ist. Programme werden öfter gelesen als geschrieben!
 Zitat von Tobse77
Hallo BenderD und vielen Dank für die rasche Antwort.
Die Schleife mit %subst ist zwar ne Möglichkeit, aber wirklich eleganter, als meine Nachgabe der Compiler-Schikane mit /End-Free und /Free ist das auch nicht.
Es kann doch kein Fortschritt einer Programmiersprache sein, wenn ich für etwas eine Schleife programmieren muss, wofür mir zuvor ein Befehl/Statement genügte !?!?!
Ein adäquate BiF vielleicht ??
-
 Zitat von BenderD
mit dem %subst war doch nicht gemeint das array zu füllen, sondern selbiges zu entfernen und den String direkt mit %subst anzufassen
D*B
BTW: manchmal kann es durchaus Sinn machen ein Statement durch mehr Code zu ersetzen, wenn letzteres besser lesbar ist. Programme werden öfter gelesen als geschrieben!
Danke für den weiteren Vorschlag.
Da jedoch noch weitere Abhängigkeiten (Programmnamen etc.) von der Auswahl abhängen, benötige ich das Array unbedingt - Trotzdem Danke !!
-
moin.
versuch es doch mal mit pointern:
PHP-Code:
d a10 s 10 inz( 'ABCDEFGHIJ' ) d a10_ptr s * d ara10 s 1 dim(10) based( a10_ptr )
/free a10_ptr = %addr( a10 ); *inlr = *on /end-free
ara10 enthält jetzt a-j.
musst halt nur an deine variablen anpassen.
mfg.
-
Wenn "JaNein" zur Zeit als eigenständiges Feld mit DIM(nnn) definiert ist, könntest du es als Unterfeld einer Datenstruktur (z.B. JaNeinDS) definieren, und dann den "MOVEA TabFub JaNein" durch einen "MOVEL TabFub JaNeinDS" bzw. die entsprechende Zuweisung im Free-Format ersetzen.
-
Jo, den Overlay habe ich in der schnelle vergessen, aber du hast ja gesehen was ich meinte
-
Aber das Free-Format kennt noch ein paar RPG-Gemeinheiten weniger:
E MYARR 100 7p 0
Z-ADD 1 MYARR <= füllt alles mit 1
ADD MYVAR MYARR <= Addiert 1 Variable auf jedes Element
ADD ARR1 ARR2 <= Addiert Element(ARR1) auf Element(ARR2)
usw.
Hier ist dann tatsächlich Schleifenprogrammierung angesagt. Ich gebe allerdings Dieter recht, dass die Schleife eben aussagt was getan wird, der ADD aber leider nicht, da der Variablenname selten als Array erkennbar ist.
-
 Zitat von Fuerchau
Aber das Free-Format kennt noch ein paar RPG-Gemeinheiten weniger:
E MYARR 100 7p 0
Z-ADD 1 MYARR <= füllt alles mit 1
ADD MYVAR MYARR <= Addiert 1 Variable auf jedes Element
ADD ARR1 ARR2 <= Addiert Element(ARR1) auf Element(ARR2)
usw.
Hier ist dann tatsächlich Schleifenprogrammierung angesagt. Ich gebe allerdings Dieter recht, dass die Schleife eben aussagt was getan wird, der ADD aber leider nicht, da der Variablenname selten als Array erkennbar ist.
Wer behaupted denn so was?!
PHP-Code:
/Free
//Initialisierung aller Elemente der Felgruppe Array mit 1
Array = 1;
//Erhöhung aller Elemente der Feldgruppe Array um 1
Array += 1;
//Addiert zu jedem Element der Feldgruppe Array
//das passende Element in Feldgruppe Array2
Array1 = Array1 + Array2;
/End-Free
Und dann gibt es (seit V5R3) auch noch die Built-In-Funktion %SubArr() mit der man gezielt Elemente in einer Feldgruppe bearbeiten kann. z.B.:
PHP-Code:
/Free
//Element 1-5 der Feldgruppe Array wird mit 1 gefüllt
%SubArr(Array: 1: 5) = 1;
//Element 6-8 der Feldgruppe Array wird mit 2 gefüllt
%SubArr(Array: 6: 3) = 2;
//Alle Elemente ab Element 9 werden mit *HiVal gefüllt
%SubArr(Array: 9) = *Hival;
//die Elemente 5-11 werden sortiert
SortA %SubArr(Array: 5: 7);
//Die Elemente 1-5 der Feldgruppe Array wird mit dem
//Inhalt der Elemente 4-8 der Feldgruppe Array2 gefüllt
%SubArr(Array: 1: 5) += %SubArr(Array2: 4: 5);
/End-Free
Birgitta
-
D MyDS DS
D MyFunTab 30
D MyFun 1 dim(30)
MyFun = TabFun;
-
 Zitat von Fuerchau
D MyDS DS
D MyFunTab 30
D MyFun 1 dim(30)
MyFun = TabFun;
Hallo Fuerchau,
auch dir Danke für die Antwort.
Mit 2 kleinen - aber notwendigen - Korrekturen funktioniert dein Lösungsvorschlag !!
D MyDs DS
D MyFunTab 30
D MyFun 1 dim(30) overlay(MyFunTab)
MyFunTab = TabFun;
DANKESCHÖN !!
Similar Threads
-
By Fucasdreh in forum NEWSboard Server Job
Antworten: 0
Letzter Beitrag: 10-01-07, 13:12
-
By andreas.lundschien in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 27-09-06, 10:56
-
By Muchi in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 03-08-06, 09:41
-
By tomikra in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 10-05-04, 14:21
-
By woki in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 13-04-04, 12:09
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks