View Full Version : 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
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 ??
D MyDS DS
D MyFunTab 30
D MyFun 1 dim(30)
MyFun = TabFun;
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!
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 ??
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 !!
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:
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 ;)