%CHAR(日付|時刻|タイム・スタンプ {: 形式})
%CHAR は、日付、時刻、またはタイム・スタンプ式の値を文字に変換できます。
最初のパラメーターが定数の場合、変換はコンパイル時に行われます。
2 番目のパラメーターには、戻された文字データが変換される目標の日付、時刻、またはタイム・スタンプの形式が入ります。戻り値には、指定された形式の後にゼロが続いていない限り、区切り記号を含みます。
戻り値の CCSID は *JOBRUN です。
詳細については、変換命令または 組み込み関数を参照してください。
日付、時刻、タイム・スタンプがパラメーターに指定された %CHAR の例
DCL-S date DATE INZ(D'1997/02/03');
DCL-S time TIME INZ(T'12:23:34');
DCL-S timestamp6 TIMESTAMP INZ(Z'1997-02-03-12.45.59.123456');
DCL-S timestamp0 TIMESTAMP(0) INZ(Z'1997-02-03-12.45.59');
DCL-S timestamp1 TIMESTAMP(1) INZ(Z'1997-02-03-12.45.59.1');
DCL-S result VARCHAR(100);
次の例では、時刻および日付をデフォルト形式でフォーマットします。
デフォルト形式は両方とも *USA であると想定しています。
result = 'It is ' + %CHAR(time) + ' on ' + %CHAR(date);
// result = 'It is 12:23 PM on 02/03/1997'
次の例では、時刻および日付をジョブ形式でフォーマットします。
ジョブ日付形式は *MDY、ジョブ時刻区切り記号はピリオドであると想定しています。
result = 'It is ' + %CHAR(time : *jobrun)
+ ' on ' + %CHAR(date : *jobrun);
// result = 'It is 12.23.34 on 97-02-03'
次の例では、時刻および日付を特定の形式でフォーマットします。
result = 'It is ' + %CHAR(time : *hms:)
+ ' on ' + %CHAR(date : *iso);
// result = 'It is 12:23:34 on 1997-02-03'
次の例では、タイム・スタンプを区切り記号を使用してフォーマットします。
result = %CHAR(timestamp0);
// result = '1997-02-03-12.45.59'
result = %CHAR(timestamp1);
// result = '1997-02-03-12.45.59.1'
result = %CHAR(timestamp6);
// result = '1997-02-03-12.45.59.123456'
次の例では、「&」区切り記号を指定することによって、区切り記号なしでタイム・スタンプをフォーマットします。
result = %CHAR(timestamp0 : *iso&);
// result = '19970203124559'
result = %CHAR(timestamp1 : *iso&);
// result = '199702031245591'
result = %CHAR(timestamp6 : *iso&);
// result = '19970203124559123456'
結果の一部のみが必要な場合は、%CHAR 結果と一緒に %SUBST を使用できます。
result = 'The time is now ' + %SUBST (%CHAR(time):1:5) + '.';
// result = 'The time is now 12:23.'