PDA

View Full Version : FREE RPG Z-Add / Move



loeweadolf
21-02-04, 22:15
Folgendes Problemchen:

2 Variablen

D FeldA s 5 0 inz(12345)
D FeldB s 3 0 inz(0)

Mit welcher Anweisung in Free RPG bekomme ich den Wert von FeldA (letzten 3 Stellen = 345 ) nach FeldB.

Bei EVAL gibts einen Programm-Abbruch.

Im festen Format könnte man z.B.: verwenden:
z-add FeldA FeldB
oder
move FeldA FeldB

mfg. Ludger :rolleyes:

BenderD
22-02-04, 09:01
Hallo Ludger,

das was Du da im fixed Format macht, darf ja eigentlich nicht wahr sein und würde auch in keiner ordentlichen Programmiersprache gehen. Da wird ein numerisches Feld als Alfa angefasst und rein zufällig (in Worten zufällig) landen die 3 letzten Stellen woanders; jede Änderung der Deklaration verändert den Code.
Was willst Du eigentlich wirklich??
Ich vermute mal, Du willst den Rest nach Division durch 1000, das geht dann mit:
FeldB = %rem(FeldA : 1000);
den Ewald kannst Du getrost weglassen, es reicht schon, wenn Du das ebenso unsinnige /free nicht weglassen darfst.

mfg

Dieter Bender

loeweadolf
22-02-04, 09:44
Guten Morgen Dieter,

es ist d o c h wahr, weil die Deklarationen genauestens bekannt sind und die Übertragung der letzten drei Stellen geschieht nicht zufällig, sondern bewußt gewollt.

Der Tipp mit dem Rest nach der Division durch 1000 ist sehr gut. Das kann ich hierfür verwenden.

Die Sache mit "Ewald" ist bekannt.

Es ist doch schön zu sehen, dass auch andere am Karneval am Computer sitzen.

In diesem Sinne: Vielen Dank und Helau

BenderD
22-02-04, 11:27
Hallo Ludger,

ich kenne diese Art zu programmieren, aber schlechter Stil ist es dennoch, eine Änderung an einer Stelle (der Deklaration) hat völlig unübersehbare Auswirkungen an anderer Stelle (im Code). Zudem ist es so, dass man den code nicht versteht ohne in der Deklaration nachzusehen. Man macht scheinbar eine Zuweisung, erwartet also, dass in beiden Feldern dasselbe steht und zieht die "Denkste" Karte.

BTW: Karl ist im free ebenso überflüssig wie Ewald.
Alternative zu %rem ist hier Casting mit %char und dann %subst und dann wieder Cast rückwärts mit %int

Dieter Bender

loeweadolf
22-02-04, 13:50
Hallo Dieter,

BTW.
%char %subst %int

BIFs sind in vielen Fällen recht hilfreich. Doch in manchen Fällen fährt man mit der Kuh ums Dorf.

mfg Ludger

BenderD
22-02-04, 14:39
Hallo Ludger,

dann macht man sich eine eigene Procedure, die weiss wie man mit einer Kuh um's Dorf fährt, gibt der einen sprechenden Namen und dann wird es in der Anwendung wieder einfach und lesbar.

mfg

Dieter Bender

Fuerchau
22-02-04, 18:39
Nun, eine genauso eindeutige Variante ist die korrekte Definition:



d ds
d Felda 5 0 inz(12345)
d feldb 3 0 overlay(felda:2)


Nun spart man sich den EVAL und kann an der Definition erkennen, was man erreichen will.

BenderD
23-02-04, 08:00
Hallo,

@Baldur: Dafür gilt dasselbe, wie für die MOVE, Z-ADD Variante, verdeckte Programmierung => schlechter Stil. Die Sparsamkeit mit EVAL ist auch so 'ne Sache. Man schreibt meist nur einmal und liest mehrfach und beim lesen wird's hier aufwändiger.

mfg

Dieter Bender

PS: einfach nur meine Meinung, mit der ich meist nicht hinter dem Berg halte.