PDA

View Full Version : FREE RPG .. TESTN



loeweadolf
02-07-04, 10:36
Guten Tag,

durch welche Anweisung kann ich im FREE RPG die Anweisung aus Fixed RPG "TESTN" ersetzen.

Ich möchte ein alphan. Feld auf numerisch prüfen.

mfg. Ludger :rolleyes:

Fuerchau
02-07-04, 10:42
Ersatzlos gestrichen im /free !
Alternative:

monitor;
if %dec(Alpha:St:Nk) <> *zero;
endif;
on-error *all;
// nicht numerisch
endmon;

loeweadolf
02-07-04, 10:56
monitor;
if %dec(Alpha:St:Nk) <> *zero;
endif;
on-error *all;
// nicht numerisch
endmon;

Danke für die schnelle Antwort.
MONITOR hört sich ja interessant an.

Wird mit obiger Lösung auf *zeros oder auf numerisch abgefragt ?

mfg Ludger

Fuerchau
02-07-04, 11:20
%dec() versucht in einen Dezimalwert umzuwandeln (Dezimalpunkt/-komma wird berücksichtigt). Klappt das nicht wird ein RPG-Fehler gemeldet (MCH....) den man aber mit "monitor" abfangen kann.
Die if-Abfrage wird nur pseudomäßig benötigt, da ich %dec() nicht alleine verwenden kann, sondern nur in einem Ausdruck als Zuweisung (eval) oder Abfrage (if/when) oder Argument(callx).
Wenn ja alles i.O. ist, wird der on-error-Zweig nicht ausgeführt.
So habe ich durch die Hintertür einen TESTN.

Ich gebe aber zu, dass das nicht die feine Art der Programmierung ist.
Dann schon lieber eine Funktion schreiben, die TESTN halt nicht als /free versucht.

loeweadolf
02-07-04, 11:28
Danke für die ausführliche Antwort. Ludger

Hubert
24-01-05, 13:40
%dec() versucht in einen Dezimalwert umzuwandeln (Dezimalpunkt/-komma wird berücksichtigt). Klappt das nicht wird ein RPG-Fehler gemeldet (MCH....) den man aber mit "monitor" abfangen kann.


Hallo Fuerchau,

ich bekomme beim Umwandeln immer den Fehler RNF0327 Der erste Parameter für %DEC oder %DECH ist ungültig.

Beim Nachlesen im Handbuch steht dort auch, dass nur numerische Werte angegeben werden können.

Oder ist das erst nach 5.1 ?

Gruß

Hubert

Fuerchau
24-01-05, 16:48
%DEC (Convert to Packed Decimal Format)
%DEC(numeric or character expression{:precision:decimal places})
%DEC converts the value of the numeric or character expression to decimal
(packed) format with precision digits and decimal places decimal positions. The
precision and decimal places must be numeric literals, named constants that
represent numeric literals, or built-in functions with a numeric value known at
compile-time.
Parameters precision and decimal places may be omitted if the type of expression
is neither float nor character. If these parameters are omitted, the precision and
decimal places are taken from the attributes of numeric expression.
If the parameter is a character expression, the following rules apply:
v The sign is optional. It can be ’+’ or ’-’. It can precede or follow the numeric
data.
v The decimal point is optional. It can be either a period or a comma.
v Blanks are allowed anywhere in the data. For example, ’ + 3 ’ is a valid
parameter.
v The second and third parameters are required.
v Floating point data, for eample ’1.2E6’, is not allowed.
v If invalid numeric data is found, an exception occurs with status code 105.

Auszug aus V5R1-Handbuch. Ob bereits in V4 glaube ich eher nicht.

Hubert
25-01-05, 07:43
Ich hab schon an meinem Verstand gezweifelt; inzwischwen hab ich des Rätsels Lösung im Beitrag von Brigritta Hauser (http://www.rlpforen.de/showthread.php?t=4990) gefunden: %dec und Co arbeiten erst ab V5R2 mit Alpha Werten.