Anmelden

View Full Version : free-format unterschiedliche Felddefinitionen



Seiten : 1 [2]

Fuerchau
10-08-12, 13:35
Nun ja, wenn man den 1. Beitrag genau liest, sieht man, dass auch der Schreiber da nicht sauber arbeitet:

a) per substr(xxx:1:6) wird der linksbündige teil genommen
b) per "move" wird der rechtsbündige Teil genommen.
Ich habe mich von b) leiten lassen.

@Dieter
Das kann man in anderen Sprachen ja genauso machen in dem man nur mehrere unterschiedlich benannte Zeiger auf den selben Inhalt verwendet, was auch oft genug gemacht wird.

B.Hauser
10-08-12, 13:50
Vielleicht noch eine Anmerkung zu dem o.g. Statement:


##bp = %dec(%subst(%char(bper):1:6):6:0);

%CHAR richtet linksbündig aus und entfernt führende Nullen:
BPER = 20120810 --> ##BP = 201208
BPER = 123456 --> #BP = 123456
BPER = 123 --> Abbruch!

... habe zufällgi gerade eben einen solchen Fehler uns rausgefischt!

Besser wäre in diesem Fall:

##BP = %Int(%Subst(%EditC(BPER: 'X'): 1: 6));

Birgitta

BenderD
10-08-12, 13:52
@Dieter
Das kann man in anderen Sprachen ja genauso machen in dem man nur mehrere unterschiedlich benannte Zeiger auf den selben Inhalt verwendet, was auch oft genug gemacht wird.
... das gehört auch da zu den Techniken, die dazu Anlass bieten dem Programmierer das Handbuch um die Ohren zu hauen (und das schreibe ich als politischer Pazifist!). Zudem gibt es Programmiersprachen wo zumindest der Compiler weiß auf was so ein Pointer da eigentlich zeigt und in Java hat man diesen Unfug gleich ganz unterbunden.
Sorry, das sind alles faule Ausreden! Gute Programme und sauberer Programmierstil kommt ohne solchen Unfug aus!!! Das ist nicht besonders clever, das ist Murks von der murksigsten Sorte!!!

D*B

Fuerchau
10-08-12, 14:10
@Birgitta
Da es sich hier (erkennbar) um ein Datum handelt, gehe ich mal davon aus, dass kein Datum < als Jahr 1000 vorkommt ;).

RobertMack
10-08-12, 14:19
...wir gehen doch @lle davon aus, dass es keine ungeprüften Feldinhalte gibt, alles schön durch Monitor überwacht und zuverlässig committed oder ggf. per Rollback zurückgewiesen wird - oder etwa nicht? :D

ExAzubi
21-08-12, 09:25
Das mit dem




#bp = %dec(%subst(%char(bper):1:6):6:0);</pre>


funktioniert ja an sich, und mit zwei / drei Statements mehr gehts das ganze sogar noch sauebr durch.


%LENGTH(%TRIM(%CHAR(BPER)))>=6


trotzalledem würde ich mal eine Monitor-Group drumherum bauen, denn sicher ist sicher!

Wie sagte mein alter Chef immer!
"Machen sie denn Arsch-Test!!!!!
Setzen Sie sich mit dem Arsch auf die Tastatur, und das Programm darf nicht abstürzen!"