DATALINK 値はカプセル化された値で、 データベース以外の場所に保管されているファイルへのデータベースからの論理参照を含んでいます。
このカプセル化された値のデータ位置属性は、URL の形式でのファイルへの論理参照です。 この属性の値は、 以下の BNF 119 によって指定される、URL の構文に準拠しています。 これは、RFC 1738 : Uniform Resource Locators (URL), T. Berners-Lee, L. Masinter, M. McCahill, December 1994 に基づいています。
BNF 指定では、以下の規則が使用されます。
DATALINK での BNF 指定を以下に示します。
URL
url = httpurl | fileurl | uncurl | dfsurl | emptyurl
HTTP
httpurl = "http://" hostport [ "/" hpath ] hpath = hsegment *[ "/" hsegment ] hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
RFC1738 の元の BNF での検索エレメントは除去されている点に注意してください。 これは、そのエレメントがファイル参照の本質的な部分ではなく、 DATALINK のコンテキストでは意味をなさないためです。
FILE
fileurl = "file://" host "/" fpath fpath = fsegment *[ "/" fsegment ] fsegment = *[ uchar | "?" | ":" | "@" | "&" | "=" ]
RFC1738 とは異なり、host が任意選択ではなく、 "localhost" ストリングが特別な意味を持たない点に注意してください。 これにより、"localhost" の解釈で、 クライアント / サーバーと EEE 構成で混乱が生じるのを避けることができます。
UNC
uncurl = "unc:\\" hostname "\" sharename "\" uncpath sharename = *uchar uncpath = fsegment *[ "\" fsegment ]
NT では、一般的に使用されている UNC 命名規則をサポートしています。 これは RFC1738 での標準方式ではありません。
DFS
dfsurl = "dfs://.../" cellname "/" fpath cellname = hostname
DFS 命名方式をサポートしています。 これは RFC1738 での標準方式ではありません。
EMPTYURL
emptyurl = "" hostport = host [ ":" port ] host = hostname | hostnumber hostname = *[ domainlabel "." ] toplabel domainlabel = alphadigit | alphadigit *[ alphadigit | "-" ] alphadigit toplabel = alpha | alpha *[ alphadigit | "-" ] alphadigit alphadigit = alpha | digit hostnumber = digits "." digits "." digits "." digits port = digits
DATALINK 値では、空の (長さゼロ) URL もサポートされています。 これらは、調整例外が報告されてヌル不可の DATALINK 列が呼び出される場合に、 DATALINK 列を更新するのに便利です。 長さゼロの URL を使用すれば、その列が更新され、リンクが解除されます。
各種の定義
lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" hialpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" alpha = lowalpha | hialpha digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" safe = "$" | "-" | "_" | "." | "+" extra = "!" | "*" | "'" | "(" | ")" | "," hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f" escape = "%" hex hex unreserved = alpha | digit | safe | extra uchar = unreserved | escape digits = 1*digit
前後のブランク文字は、構文解析中に DB2 によって切り詰められます。 また、スキーム名 ('HTTP'、'FILE'、'UNC'、'DFS') および host では大文字小文字が区別されず、 いつでも大文字でデータベースに保管されます。