Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ファイル名に関するタイム・スタンプ指定

ファイル名のタイム・スタンプ指定に関する参照情報を提供します。

詳細

ファイルとデータをやりとりするビジネス・オペレーションおよびビジネス・サービスを構成する際に、入出力ファイルのファイル名に日付や時刻の書式コードを含む文字列を指定することがよくあります (%Y%M%d%h%m%s_%f.txt など)。 この文字列内の書式コードは、実行時にそのときの日付と時刻に応じて動的に解決されます。

Ensemble では、タイム・スタンプ指定文字列を構成するために、以下のようなルールがサポートされます。

  • 文字列には、リテラル文字と、以下のテーブルにある任意の書式コードを含めることができます。

  • 書式コードでない部分の文字列は、その結果のタイム・スタンプにそのまま表示されます。

  • すべての書式コードは、オプションです。

  • それぞれの書式コードは、% 文字、オプションの # 文字、および変換文字で構成されます。

  • 文字列の最初に %K または %L の書式コードがある場合、時刻は特定のタイム・ゾーンまたはロケールに変換されます。

記号 ファイル名の仕様の中での意味
%a ロケールの曜日名の短縮形 (Sun、Mon、...、Sat)
%A ロケールの曜日名の完全形 (Sunday、Monday、...、Saturday)
%b ロケールの月名の短縮形 (Jan、Feb、...、Dec)
%B ロケールの月名の完全形 (January、February、...、December)
%c

ローカル・マシンで指定される Caché の日付と時刻の表現形式。ただし、タイム・スタンプの書式設定において、Ensemble は一般的な日付と時刻形式で使用されている特定の文字を置換します。Ensemble では、空白が下線 (_) に、スラッシュ (/) がハイフン (-) に、コロン (:) がドット (.) に置き換えられます。

その結果、以下のようになります。

MM-DD-YY_hh.mm.ss

%c を指定する際に、以下のようなパラメータを持つことができます。%c(dformat,tformat,precision) は、指定に応じて日付と時刻の書式を設定できます。ここで、

  • dformat は、日付の書式を示す数字です。

  • tformat は、時刻の書式を示す数字です。

  • precision は、1 秒未満の表示に使用する小数の桁数です。

"Caché ObjectScript リファレンス" では、%c のパラメータの dformattformat、および 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

入力ファイル名のうち、最後のピリオドの直前までの部分のみを使用します。以下に例を示します。

  • 入力ファイル名が “Summary.docx” の場合は、%#f は “Summary” に置換されます。

  • 入力ファイル名が “MyData.txt.dat” の場合は、%#f は “MyData.txt” に置換されます。

%$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 はタイム・ゾーンです。以下のいずれかを指定できます (大文字、小文字は区別されません)。

  • Server — (デフォルト) 実行コードが存在するサーバの時刻。

  • UTC — 協定世界時 (UTC)

  • [+]n — UTC 時刻の後の (東側の) 時間数。n には、小数値を指定できます (例: 4.5)。

  • -n — UTC 時刻より前の (西側の) 時間数 (n には、小数値を指定できます)。

  • [+]hhmm — UTC 時刻の後の (東側の) 時間と分 (ISO 8601:2000 標準書式)。

  • -hhmm — UTC 時刻より前の (西側の) 時間と分 (ISO 書式)。

%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) Caché $HOROLOG 形式。
%q(4) Caché $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 標準には準拠しません。

以下の規則に従います。

  • 週番号は 00 ~ 53 です。

  • 日曜が各週の最初の曜日です。

  • 1 月の 第 1 日曜が第 1 週の最初の日です。

  • 新年の最初の日曜より前の日は、第 0 週になります。

%#U 週をベースとした年表記において、現在の週を示す数字。%U の説明にある規則に従います。ただし、出力文字列に先頭の 0 はありません (0-53)。
%w 曜日 (日曜=0、月曜=1、...、土曜=6)
%#w %w と等価
%W

週をベースとした年表記において、現在の週を示す 2 桁の数字 (00-53)。ISO 8601:2000 標準には準拠しません。

以下の規則に従います。

  • 週番号は 00 ~ 53 です。

  • 月曜が各週の最初の曜日です。

  • 1 月の 第 1 月曜が第 1 週の最初の日です。

  • 新年の最初の月曜より前の日は、第 0 週になります。

%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 分後 (グリニッジの西) を示します。Ensemble でタイム・ゾーンを特定できない場合は、タイム・スタンプ指定文字列の %z コードは無視されます。
%#z 協定世界時 (UTC) からのオフセットとしての時間単位のタイム・ゾーン。先頭に +/- が付き、0 は付きません。末尾は小数になる場合があります。例えば、-4.5 は UTC の 4 時間 30 分後 (グリニッジの西) を示します。Ensemble でタイム・ゾーンを特定できない場合は、タイム・スタンプの %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 度のみ使用できます。

パーセント記号とプラス記号の間に以下の記号を挿入することで、このカウンタ書式を変更できます。

  • ドル記号 ($) — カウンタをリモート FTP ファイル名に対して使用できるようにします。常に静的カウンタをインクリメントして、結果として得られる値を使用します。ローカル・ファイルの場合は、その後に一意性が確認されます。

  • 感嘆符 (!) — カウンタなしのファイル名が一意にならない場合にのみ、カウンタを付加します。

  • 番号記号 (#) — 先行するゼロと先行する a がファイル名の一意性を確保するために必要ない場合、これらを省略します。

ドル記号 ($) が指定されていない場合は、カウンタは常に nn で指定された初期値から再開されます。カウンタをタイムスタンプと組み合わせて使用している場合は、通常はカウンタのインクリメント回数が少ない段階で、新しいタイムスタンプ値が適用されて一意性が確保されます。カウンタをタイムスタンプなしで使用しているために、カウンタのインクリメント回数が多くなることが予想される場合は、ドル記号を指定することで、既存のファイル名が繰り返し再確認されることを回避してください。

例えば、“%#F_%Q_%+(a0)%$f” という書式を指定したとします。入力ファイル名が “NewFile.txt” の場合に、3 つのファイルが同じタイムスタンプで作成された場合は、これらのファイル名は次のようになります。

  • NEWFILE_2014-09-12_16.43.15.895_a0.txt

  • NEWFILE_2014-09-12_16.43.15.895_a1.txt

  • NEWFILE_2014-09-12_16.43.15.895_a2.txt

%% リテラルのパーセント (%) 記号
%( リテラルの左かっこ "("
%_ 予約されているトークン (使用禁止)。このシーケンスを使用しても、何もされません。

前のテーブルでは、送受信ファイル・アダプタで使用するタイム・スタンプを指定するときに使用可能なすべての書式コードについて説明しました。これらのコードは、POSIX、IEEE、および ISO の標準の時間の書式コードに準拠しています。以下の表では、これらの標準に準拠していないタイム・スタンプの書式コード、または別の標準に準拠した書式コードを示します。

記号 ファイル名の仕様内での特有の意味
%# Ensemble では、%# 接頭語などの特定の Microsoft 拡張セマンティクスをサポート (および拡張) しています。
%c これは、ローカル・マシンで指定される Caché タイム・スタンプを示します。
%E Ensemble では %E コードをサポートしません。
%F Ensemble では、大文字への文字列の置き換えとして %F がサポートされていますが、ISO 形式の日付ではサポートされていません。Ensemble では、%q(2) または %Q(2) として ISO 形式の日付がサポートされます。
%K(n) ユーザは、ファイル指定文字列の初めに %K(n) コードを指定することによって、タイム・ゾーンを定義します。%K(n) コードでは何も出力されませんが、タイム・スタンプの書式を設定する前に、変換先のベースとなるタイム・ゾーンを指定します。
%L(n) ユーザは、ファイル指定文字列の始めに %L(n) コードを指定することによって、ロケールを定義します。%L(n) コードでは何も出力されませんが、ロケールに依存する書式コードで使用するためにベースとなるロケールを指定します。
%O Ensemble では %O コードをサポートしません。
%P Ensemble では、このコードを大文字の AM または PM として定義します。
%q、%Q Ensemble では、これらの一部のコードを、POSIX、IEEE、ISO 以外の標準の、HL7 や ODBC などに準拠して定義します。
%( Ensemble では、このコードをリテラルの ( 文字として定義します。
FeedbackOpens in a new tab