PDA

View Full Version : Ach Datum, wie wäre das schön ...



camouflage
12-04-19, 10:51
... wenn ich doch beim BIF %date das Format dynamisch mitgeben könnte.

Hat diese Idee schon mal irgendwer gehabt und es auch realisiert oder dreh ich mich mit meiner "verrückten" Idee im Kreis.

Zum Verständnis: Ich will zb *DMY in einem Feld als Parameter mitgeben.

ExAzubi
12-04-19, 11:07
Das geht leider nicht, da *DMY *ISO etc Sonderwerte sind vom Quasityp Datumsformat ...

Das einzige was helfen würde wäre ein SELECT außenrum, mit dem du das Variable Format abfragst und das dann so umsetzt



SELECT
WHEN ZZDATFMT = '*ISO'
var1 = %date(datvar:*ISO)
WHEN ZZDATFMT = '*EUR'
var1 = %date(datvar:*EUR)
...
ENDSELECT

camouflage
12-04-19, 11:12
Danke, wäre ja fast zu schön gewesen. Hab mir's schon gedacht - aber fragen darf man ja.

Dann gibt es nur zwei Varianten:
a) fix
b) den Select in einem Serviceprogramm - geht auch.

Fuerchau
12-04-19, 11:23
Dynamisches SQL geht auch:
dcl-s MySQL varchar(100);
dcl-s MyCharDate varchar(10);

MySQL = 'values(char(current date, iso)) into ?';
exec sql execute immediate : MySQL using : MyCharDate;

Andererseits: wofür brauchst du das?
Im Normalfall benötigt man das Datum statt in ISO in anderen Formaten doch nur für die Ausgabe.

kitvb1
15-04-19, 07:08
You could also write your own little service program to convert from one format and output in another format including specifying the output Trennzeichen and upper/lower case.
This allows you to create any format you want. You can do this using CEEDAYS and CEEDATE :


// RtnIndPR Processing
Select;
// Incoming format *CYMD
when InFormatPR = 1;
ISOdate = %date(InDatePR :*cymd);
ENDsl;

monitor;
CEEDAYS(%char(ISOdate :*iso) :CEEinFmtTxt :lilian :*OMIT);
on-error;
RtnIndPR = 'EE';
OutDatePR = %char(ISOdate);
endmon;

if RtnIndPR <> 'EE';
Select;
// Outgoing format 'DD-Mmm-YYYY'
when OutFormatPR = 1;
CEEoutFmtTxt = 'DD-Mmm-YYYY';
ENDsl;

monitor;
CEEDATE(lilian :CEEoutFmtTxt :OutDatePR :*OMIT);
on-error;
RtnIndPR = 'EE';
OutDatePR = %char(ISOdate);
endmon;
ENDIF;