フィールドオプションを使用する

フィールドオプションを使用することにより、フィールドの位置を指定したり (固定長レコード、可変長レコードの両方)、データの書式を指定できます。これまでの例で示したように、フィールドオプションは各フィールドエントリの後に記述します。

ファイル内のデータの位置を指定するときは、次のフィールドオプションを使用します。

テキストデータの書式を指定するときは、次のオプションを使用します。

詳細については、この後で説明します。

フィールドの位置を指定する

START、WIDTH、END、LENGTH と数値を使用すると、テキストファイル内の固定長フィールドのデータの開始列と終了列を指定できます。START と END は、フィールドが特定の文字で区切られているときではなく、各列の位置が決まっているときに使用します。例えば、顧客の ID 番号 (IDNO) がテキストフィールドで、常に列 1 から開始し列 9 で終了するときは、次のように指定します。

IDNO: TYPE TEXT START 01 END 09.

値は、ホワイトスペースを使用して指定された列の範囲内のどこに位置していてもかまいません。例えば、フィールドオプションで START 1 WIDTH 9 と指定したとき、値は列 1 から列 9 までのどこかにあることになります。つまり、次の 3 つのレコードは値の位置は異なりますが、いずれも 5 という値を持つことになります。

列位置
123456789
Record 1:  5
Record 2:  5
Record 3:  5

START @fldname を使用すると、入力レコード内のカレントの (開始) 位置をリセットし、入力エリアを別のデータベースフィールドで使用するために再定義できます。このオプションを使用すると、フィールドの一部やフィールドのグループにアクセスできます。以下に例を示します。

WholeField: 	TYPE TEXT UNTIL ","
FirstChar:  	TYPE TEXT START @wholeField WIDTH 1

WholeField は、入力レコード内の最初のカンマまでのすべてのデータを含むテキストフィールドとして定義されています。FirstChar フィールドの指定によって、カレントのフィールド位置が WholeField の先頭に戻されます。そして WIDTH 1 の指定により、FirstChar フィールドには WholeField の先頭の値だけがセットされます。WIDTH オプションの代わりに LENGTH オプションを使用することもできます。

UNTIL は、入力または出力データの区切り (または終了位置) を示す文字列を指定するために使用されます。テキストファイル内のフィールドは、最初の UNTIL 文字列が検出された時点で終了します。この上の例では、区切り記号はカンマ (,) で、レコード内の最初のカンマまでのデータが WholeField の値となります。次に示すエスケープシーケンスを区切り記号として使用できます。

¥a	Alarm or bell character
¥b	Backspace character
¥f	Form feed character
¥n	New line character
¥t	Tab character
¥r	Carriage return
¥¥	Single backslash
¥v	Vertical tab character
¥0bbb	Octal conversion (where bbb is the octal number to convert to a character)
¥0xhh	Hexadecimal conversion (where hh is the hexadecimal number to convert to a character)
¥nnn	Integer conversion (where nnn is the decimal number to convert to a character)

UNTIL は、文字または文字列で区切られているフィールドで使用します。Connector for Text では、UNTIL で指定した文字列が見つかるまで出力テキストまたは入力テキストがスキャンされます。または、カレントの論理レコードの終端が見つかるまでスキャンされます。UNTIL で指定した文字列が見つからない場合は、論理レコードの終端までのすべてのデータが、対応するフィールドに入力されます。

UNTIL は、引用符で囲まれカンマで区切られた値を定義するときに便利です。例えば、次のフィールドを区切るときは、UNTIL "","" と記述します。

"FIELD 1", "FIELD 2"

フィールドの終わりを示す文字列を 1 つだけでなく、複数使用したいことがあります。そのようなときは、UNTILLIST フィールドオプションを使用すると、複数の文字列をフィールドの区切り文字として指定できます。UNTILLIST で指定したいずれかの文字列が検出されると、そこがフィールドの終わりとみなされます。

UNTILLIST は、カンマで区切られた値または一意の文字で区切られたデータフィールドを定義するときに役に立ちます。UNTILLIST は、START、END、WIDTH パラメータと共に使用できます。この場合、UNTILLIST の文字列は、START、END、WIDTH で指定された範囲内で検索されます。

注: 複数の文字を個々に検索せず、同時に検索するときは、UNTIL フィールドオプションを使用します。

書式オプションを指定する

Connector for Text では、次の書式オプションとその機能を使用できます。これらのオプションを使用するときには、フィールドエントリの右側にオプション名を記述します。

EBCDIC

EBCDIC から ASCII への変換

EBCDIC フィールドオプションは、EBCDIC の入力フィールドを Notes 文書内に追加する前に ASCII に変換します。

注: EBCDIC を指定するときは、固定フィールドを使用してください。また、入力が EBCDIC 形式のときは、UNTIL による表記は使用できません。

例: 次の例では、Connector for Text により EBCDIC データがテープダンプから読み込まれ、LEI テキストに変換されます。

;EBCDIC.ZID
Type: TYPE TEXT VALUE "Stock"
Part: TYPE TEXT START 1 WIDTH 12 EBCDIC
Quantity: TYPE TEXT START 13 WIDTH 3 EBCDIC
Description: TYPE TEXT START 16 WIDTH 24 EBCDIC

FORMAT

日付または特殊フィールドの書式を設定します。

入力フィールドまたは出力フィールドの書式を指定可能で、フィールドの型が DATE、TEXT、NUMBER のときに使用できます。ここでは、フィールドの型ごとに、FORMAT フィールドオプションの使用方法を説明します。

DATE 型のときの FORMAT

DATE フィールドでは、日付や時刻の要素を示す次の書式を使用できます。

M は月を示します。

N は月の名前を示します (January、Feb、April など)。月の名前の長さは、少なくとも 3 文字にして固有性を保証する必要があります。

D は日を示します。

Y は年を示します。小文字の y は 20 世紀の年を 2 桁で示したものです。この値に 1900 が加えられます。

J はユリウス日を示します。

W は曜日 (例えば、Monday) を示します。出力時にのみ使用できます。

h は時を示します。

m は分を示します。

s は秒を示します。

A または P は午前または午後 (A.M. または P.M.) を示します。例えば、日付フィールドの値が次のような形式の場合は、

02xxxMAR0315

ZID エントリを次のように指定します (認識できない文字は無視されるので、文字「x」は無視されます)。

Important Date: TYPE DATE BEGIN 1 WIDTH 12 FORMAT "YYxxxxxxMMDD"

これによって、ImportantDate フィールドは「03/15/02」という形式の日付に変換されます。

注: Y または y、M、N、D、J、h、m、s のみが書式情報として認識されます。W は曜日を示します (出力時のみ)。これ以外の文字は、無視されます。
注: 書式なしで DATE フィールドを指定すると、日付の値は付録 A の「2000 年問題への対策」で説明している方法で変換されます。

TEXT 型または NUMBER 型での FORMAT

FORMAT を使用して、条件に基づいて実際の入力値を変換できます。条件付き FORMAT 指定の構文は、次のとおりです。

FORMAT "a,b,c=X;d,e=Y;Z"

FORMAT 指定を使用すると、次のように処理されます。

入力フィールドの値が a、b、c のいずれかに等しいときは、値は X に変換されます。

それ以外の場合、入力フィールドの値が d または e に等しいときは、値は Y に変換されます。

それ以外の場合は、値は Z に変換されます。

最後の値 (比較値がないもの。上記の例では Z) が指定されていない場合は、どちらの条件にも一致しない値は変換されません。

注: 比較されるのは値そのもので、入力フィールド全体が比較されるわけではありません。比較の前にフィールドが標準化されるので、前後のホワイトスペースは比較の対象にはなりません。

例:

社員レコードに対してさまざまな日付と比較のオプションを使用した例を次に示します。

; Mon_Name2 ZID SCRIPT
;
Type: TYPE TEXT VALUE "Employees"
Name: TYPE TEXT UNTIL ","
HireDate: TYPE DATE FORMAT NNN-DD-YY UNTIL ","
Title: TYPE TEXT FORMAT "Pres,Pre=CEO,Man,Mgr=MGR,EMP" UNTIL ","
Date_Of_Birth: TYPE DATE FORMAT yy-MMDD  UNTIL ¥r¥n
*
Claude Hopper,Mar-07-95,Pres,14-0904
Evander Holyfield,Jun-30-96,Man,69-0315

RIGHT

データを右寄せで出力します。

TEXT 型のデータは、右寄せまたは左寄せで出力できます。デフォルトは左寄せです。右寄せに変更するには、次の 2 つを指定しなければなりません。

注: 数値データは、デフォルトで右寄せとなります。

例:

次の例では、出力するフィールド CompanyName の長さを 40 に設定し、右寄せを指定しています。その結果として、40 文字未満の会社名は、会社名の左側にホワイトスペースが挿入されて、右寄せで出力されます。

; RIGHT ZID SCRIPT
;Type: TYPE TEXT VALUE "1. Customer Profile"
CompanyName:    	TYPE TEXT  UNTIL ¥r¥n LENGTH 40 RIGHT
CompanyAddress: 	TYPE TEXT  UNTIL ¥r¥n
CompanyCity:    	TYPE TEXT  UNTIL ¥r¥n
CompanyState:   	TYPE TEXT  UNTIL ¥r¥n
CompanyZip:     	TYPE TEXT  UNTIL ¥r¥n
CompanyPhone:   	TYPE TEXT  UNTIL ¥r¥n
CompanyFax:    	TYPE TEXT  UNTIL ¥r¥n
Body:           	TYPE RICH UNTIL ¥r¥n  SEP ¥r¥n

SEPARATOR

複数値のリストの区切り記号です。

SEPARATOR (または SEP) では、リッチテキスト以外のフィールドに対して、複数値のリストの区切り記号を指定します。SEP は、Notes の複数値の「リスト型」のフィールド (各値が一意の文字で区切られている) を記述するのに適しています。Notes 以外のデータベースでは、複数値のリスト型がサポートされているかどうかは、データベースの種類によって異なります。

注: リッチテキスト以外のフィールドでは、SEPARATOR オプションによってフィールドの複数の要素を区切る文字列を指定できます。

リッチテキストフィールドでは、SEPARATOR で指定された文字列が入力された箇所で改行されます。例: 区切り記号が「$$」のときは、「$$」を入力します。デフォルトの行の区切り記号は、キャリッジリターンとラインフィード (¥r¥n) です。デフォルトの区切り記号が使用されている場合は、キャリッジリターンとラインフィードの組み合わせによって改行されます。

注: リッチテキストフィールドの場合は、区切り文字により、リッチテキスト行を区切る文字列が指定されます。

次に示すエスケープシーケンスを区切り記号として使用できます。

¥a	alarm or bell character
¥b	backspace character
¥f	form feed character
¥n	new line character
¥r	carriage return character
¥t	tab character
¥v	vertical tab character
¥0bbb	octal conversion (where bbb is the octal number to convert)
¥0xhh	hexadecimal conversion (where hh is the hexadecimal number to convert)
¥nnn	integer conversion (where nnn is the decimal number to convert)

例:

次の例では、SEP 文字列を「#」として定義して、デフォルトの区切り文字のキャリッジリターンとラインフィードを「#」で上書きしています。

; NSEP ZID SCRIPT
Type: 	TYPE TEXT VALUE "Letter"
Subject:	TYPE TEXT UNTIL "," VIEWKEY 1
Author: 	TYPE TEXT UNTIL ","
Body:	TYPE TEXT SEP "#" UNTIL ¥0x0c¥r¥n
*
Painters Invade Monhegan Island, SWD, LINE1#LINE2#LINE3#LINE4

TRIM

入力データ内の余分なホワイトスペースを削除します。TRIM フィールドオプションを使用すると、Connector for Text によって、データの前後や中間に挿入された余分なホワイトスペース (空白とタブ) が削除されます。

例:

次の例では、ZID スクリプトに埋め込まれた入力データには余分なホワイトスペースが含まれています。TRIM フィールドオプションを指定すると、余分なホワイトスペースが取り除かれます。

; TRIM ZID
Type: 		type text value "Stock"
Part:    	TYPE TEXT UNTIL "," viewkey 1 TRIM
Quantity:	TYPE TEXT UNTIL "¥n"
*
Rubber      Hoses		,125
Widgets and        Gidgets	  ,255

出力データは次のようになります。

Rubber Hoses, 125
Widgets and Gidgets, 255

VALUE

入力フィールドのデフォルト値です。

入力フィールドのデフォルト値を指定します。VALUE フィールドオプションは、Notes 文書に、対応する入力フィールドを持たない新規フィールドを追加するときに役に立ちます。例えば、次のように指定します。

OFFICE_TITLE: TYPE TEXT VALUE "Originator"

上記のように指定すると、入力データが追加または更新されるたびに、OFFICE_TITLE という名前のフィールドが「Originator」という値をともなって新規作成されます。