ファイル名に関するタイム・スタンプ指定
詳細
ファイルとデータをやりとりするビジネス・オペレーションおよびビジネス・サービスを構成する際に、入出力ファイルのファイル名に日付や時刻の書式コードを含む文字列を指定することがよくあります (%Y%M%d%h%m%s_%f.txt など)。 この文字列内の書式コードは、実行時にそのときの日付と時刻に応じて動的に解決されます。
InterSystems IRIS では、タイム・スタンプ指定文字列を構成するために、以下のようなルールがサポートされます。
-
文字列には、リテラル文字と、以下のテーブルにある任意の書式コードを含めることができます。
-
書式コードでない部分の文字列は、その結果のタイム・スタンプにそのまま表示されます。
-
すべての書式コードは、オプションです。
-
それぞれの書式コードは、% 文字、オプションの # 文字、および変換文字で構成されます。
-
文字列の最初に %K または %L の書式コードがある場合、時刻は特定のタイム・ゾーンまたはロケールに変換されます。
記号 | ファイル名の仕様の中での意味 |
---|---|
%a | ロケールの曜日名の短縮形 (Sun、Mon、...、Sat) |
%A | ロケールの曜日名の完全形 (Sunday、Monday、...、Saturday) |
%b | ロケールの月名の短縮形 (Jan、Feb、...、Dec) |
%B | ロケールの月名の完全形 (January、February、...、December) |
%c |
ローカル・マシンで指定される InterSystems IRIS の日付と時刻の表現形式。ただし、タイム・スタンプの書式設定において、InterSystems IRIS は一般的な日付と時刻形式で使用されている特定の文字を置換します。Ensemble では、空白が下線 (_) に、スラッシュ (/) がハイフン (-) に、コロン (:) がドット (.) に置き換えられます。 その結果、以下のようになります。 MM-DD-YY_hh.mm.ss %c を指定する際に、以下のようなパラメータを持つことができます。%c(dformat,tformat,precision) は、指定に応じて日付と時刻の書式を設定できます。ここで、
dformat および tformat の有効な値の一覧は、"$ZDATETIME" を参照してください。 |
%d | 月の中の日を示す 2 桁の数字 (01-31) |
%#d | 先頭に 0 を付けない月の中の日 (1-31) |
%D | 日付。%m/%d/%y と等価。 |
%#D | 日付。%#m/%#d/%y と等価。 |
%f |
日付の参照元を示す名前。参照元は、通常、入力ファイル名 (File または FTP) または IP アドレスとポート番号を連結したもの (TCP を介して取得したデータ) です。 書式コード %f に具体的な値を使用すると、その値に使用している |、?、\、/、:、[、]、<、>、&、,、;、NUL、BEL、TAB、CR、LF の各文字はすべて削除され、空白は下線 (_)、スラッシュ (/) はハイフン (-)、コロン (:) はドット (.) にそれぞれ置き換えられます。 |
%#f |
入力ファイル名のうち、最後のピリオドの直前までの部分のみを使用します。以下に例を示します。
|
%$f | 入力ファイル名のうち、最後のピリオドからファイル名の末尾 (ファイル拡張子) までの部分のみを使用します。例えば、入力ファイル名が “MyData.txt.dat” の場合は、%$f は .“dat” に置換されます。 |
%F | すべてのアルファベット文字が大文字に変換されることを除き、%f と同じ。 |
%#F | すべてのアルファベット文字が大文字に変換されることを除き、%#f と同じ。 |
%$F | すべてのアルファベット文字が大文字に変換されることを除き、%$f と同じ。 |
%h | ロケールの月名の短縮形。%b と等価。 |
%H | 24 時間形式で時間を示す 2 桁の数字 (00-23) |
%#H | 先頭に 0 を付けない 24 時間形式の時間 (0-23) |
%I | 12 時間形式で時間を示す 2 桁の数字 (01-12) |
%#I | 先頭に 0 を付けない 12 時間形式の時間 (1-12) |
%j | 年の中の日を示す 3 桁の数字 (001-366) |
%#j | 先頭に 0 を付けない年の中の日を示す数字 (1-366) |
%K(n) |
%K(n) 書式コードは、タイム・スタンプ指定文字列の最初でのみ使用できます。%K(n) では何も出力されませんが、タイム・スタンプの書式を設定する前に、変換先のベースとなるタイム・ゾーンを指定します。 n はタイム・ゾーンです。以下のいずれかを指定できます (大文字、小文字は区別されません)。
|
%m | 月を示す 2 桁の数字 (01-12) |
%#m | 先頭に 0 を付けない月の数字 (1-12) |
%M | 分を示す 2 桁の数字 (00-59) |
%#M | 先頭に 0 を付けない分 (0-59) |
%N | ミリ秒数を示す 3 桁の数字 (000-999) |
%p | 12 時間形式で使用するロケールの a.m. または p.m. のインジケータ (小文字。ドット付き) |
%#p | 12 時間形式で使用するロケールの am または pm のインジケータ (小文字。ドットなし) |
%P | 12 時間形式で使用するロケールの A.M. または P.M. のインジケータ (大文字。ドット付き) |
%#P | 12 時間形式で使用するロケールの AM または PM のインジケータ (大文字。ドットなし) |
%q または %q() | HL7 形式の日付と時刻。%Y%m%d%H%M%S または %q(0) と等価。 |
%q(0) | HL7 形式の日付と時刻。%Y%m%d%H%M%S または %q と等価。 |
%q(1) | ODBC 形式の日付と時刻。%Y-%m-%d %H:%M:%S.%N と等価。 |
%q(2) | ISO 8601:2000 標準の日付書式。%Y-%m-%d と等価。 |
%q(3) | InterSystems IRIS $HOROLOG 形式。 |
%q(4) | InterSystems IRIS $ZTIMESTAMP 形式。 |
%q(5) | GUID の作成 |
%Q | ODBC 形式の日付と時刻。%Y-%m-%d %H:%M:%S.%N または %c(3,,3) または %q(1) と等価。 |
%Q(n) | %q(n) と等価。 |
%r | a.m. または p.m. 表記を使用した 12 時間形式の秒付きの時刻。%I:%M:%S %p と等価。 |
%#r | am または pm 表記を使用した 12 時間形式の秒付きの時刻 (空白やドットなし)。%I:%M:%S%#p と等価。 |
%R | 24 時間表記の時刻。%H:%M と等価。 |
%S | 秒を示す 2 桁の数字 (00-60) (60 はうるう秒用) |
%t | <tab> 文字の生成 |
%T | 24 時間表記の秒付きの時刻。%H:%M:%S と等価。 |
%u | 曜日を示す数字 (1-7)。月曜=1、火曜=2、...、日曜=7。 |
%#u | %u と等価。 |
%U |
週をベースとした年表記において、現在の週を示す 2 桁の数字 (00-53)。ISO 8601:2000 標準には準拠しません。 以下の規則に従います。
|
%#U | 週をベースとした年表記において、現在の週を示す数字。%U の説明にある規則に従います。ただし、出力文字列に先頭の 0 はありません (0-53)。 |
%w | 曜日 (日曜=0、月曜=1、...、土曜=6) |
%#w | %w と等価 |
%W |
週をベースとした年表記において、現在の週を示す 2 桁の数字 (00-53)。ISO 8601:2000 標準には準拠しません。 以下の規則に従います。
%W は %U(1) と等価です。 |
%#W | 週をベースとした年表記において、現在の週を示す数字。%W の説明にある規則に従います。ただし、出力文字列に先頭の 0 はありません (0-53)。%#W は %#U(1) と等価です。 |
%y | 100 年の中で年を示す 2 桁の数字 (00-99)。例えば、タイム・スタンプで 1983 年は 83、2019 年は 19 になります。 |
%Y | 年を示す 4 桁の数字 (0000-9999) |
%z | ISO 8601:2000 標準形式での協定世界時 (UTC) からのオフセットとしてのタイム・ゾーン (+hhmm または -hhmm)。例えば、-0430 は UTC の 4 時間 30 分後 (グリニッジの西) を示します。InterSystems IRIS でタイム・ゾーンを特定できない場合は、タイム・スタンプ指定文字列の %z コードは無視されます。 |
%#z | 協定世界時 (UTC) からのオフセットとしての時間単位のタイム・ゾーン。先頭に +/- が付き、0 は付きません。末尾は小数になる場合があります。例えば、-4.5 は UTC の 4 時間 30 分後 (グリニッジの西) を示します。InterSystems IRIS でタイム・ゾーンを特定できない場合は、タイム・スタンプの %#z コードは無視されます。 |
%+(nn) |
カウンタを付加して、ローカル・ファイル上の (FTP 上ではなく) ファイル名の一意性を確認します。nn は、英数字などの文字列です。この文字列を構成する英数字は、右端の文字からインクリメントされます。非英数字は、出力ファイル指定内に未変更のまま含まれます。数字は 0 から 9 に向かってインクリメントされて、英字は a から z または A から Z に向かってインクリメントされます。 例えば、ファイル名の文字列指定が “%f_%+(1)” であり、入力ファイルが “NewFile.txt” である場合は、まず “NewFile.txt_1” が存在するかどうかが確認されます。このファイルが存在する場合は、“NewFile.txt_2” から “NewFile.txt_9” までのファイルの有無が確認されてから、“NewFile.txt_10” 以降のファイルの有無も確認されます。最終的に、まだ存在していないことが確認された最初のファイル名を使用してこのファイルが作成されます。 ファイル名の文字列が “%f_%+(a.1)” の場合は、まず 1 の桁がインクリメントされて 9 に達した後に、a がインクリメントされます。したがって、まず “NewFile.txt_a.1” から “NewFile.txt_a.9” までの文字列が確認されてから、“NewFile.txt_b.0” から “NewFile.txt_b.9” までが確認され、その後も同様に “NewFile.txt_c.0” 以降が順番に確認されます。“NewFile.txt_z.9” に達すると、カウンタ文字列の前に 1 が付加されます。この例では、次に確認されるのは “NewFile.txt_1a.0” です。 一般に、カウンタがタイムスタンプと組み合わせて使用されることで、複数のファイル名が同じタイムスタンプで作成された場合でも、それらのファイル名が重複する可能性が低減されます。タイムスタンプをカウンタと組み合わせることで、ファイル名の競合が発生する可能性が極めて低くなります。 %+ というカウンタ指定は、1 つのファイル名指定で 1 度のみ使用できます。 パーセント記号とプラス記号の間に以下の記号を挿入することで、このカウンタ書式を変更できます。
ドル記号 ($) が指定されていない場合は、カウンタは常に nn で指定された初期値から再開されます。カウンタをタイムスタンプと組み合わせて使用している場合は、通常はカウンタのインクリメント回数が少ない段階で、新しいタイムスタンプ値が適用されて一意性が確保されます。カウンタをタイムスタンプなしで使用しているために、カウンタのインクリメント回数が多くなることが予想される場合は、ドル記号を指定することで、既存のファイル名が繰り返し再確認されることを回避してください。 例えば、“%#F_%Q_%+(a0)%$f” という書式を指定したとします。入力ファイル名が “NewFile.txt” の場合に、3 つのファイルが同じタイムスタンプで作成された場合は、これらのファイル名は次のようになります。
|
%% | リテラルのパーセント (%) 記号 |
%( | リテラルの左かっこ "(" |
%_ | 予約されているトークン (使用禁止)。このシーケンスを使用しても、何もされません。 |
前のテーブルでは、送受信ファイル・アダプタで使用するタイム・スタンプを指定するときに使用可能なすべての書式コードについて説明しました。これらのコードは、POSIX、IEEE、および ISO の標準の時間の書式コードに準拠しています。以下の表では、これらの標準に準拠していないタイム・スタンプの書式コード、または別の標準に準拠した書式コードを示します。
記号 | ファイル名の仕様内での特有の意味 |
---|---|
%# | InterSystems IRIS® では、%# 接頭語などの特定の Microsoft 拡張セマンティクスをサポート (および拡張) しています。 |
%c | これは、ローカル・マシンで指定される InterSystems IRIS タイム・スタンプを示します。 |
%E | InterSystems IRIS では %E コードをサポートしません。 |
%F | InterSystems IRIS では、大文字への文字列の置き換えとして %F がサポートされていますが、ISO 形式の日付ではサポートされていません。InterSystems IRIS では、%q(2) または %Q(2) として ISO 形式の日付がサポートされます。 |
%K(n) | ユーザは、ファイル指定文字列の初めに %K(n) コードを指定することによって、タイム・ゾーンを定義します。%K(n) コードでは何も出力されませんが、タイム・スタンプの書式を設定する前に、変換先のベースとなるタイム・ゾーンを指定します。 |
%L(n) | ユーザは、ファイル指定文字列の始めに %L(n) コードを指定することによって、ロケールを定義します。%L(n) コードでは何も出力されませんが、ロケールに依存する書式コードで使用するためにベースとなるロケールを指定します。 |
%O | InterSystems IRIS では %O コードをサポートしません。 |
%P | InterSystems IRIS では、このコードを大文字の AM または PM として定義します。 |
%q、%Q | InterSystems IRIS では、これらの一部のコードを、POSIX、IEEE、ISO 以外の標準の、HL7 や ODBC などに準拠して定義します。 |
%( | InterSystems IRIS では、このコードをリテラルの ( 文字として定義します。 |