DDEでブランクを含む文字列や欠損値を含むデータを入力する

[OS] Windows
[リリース] ALL
[キーワード] Windows, DDE, blank, missing value, NOTAB, DLM

[質問]

DDEでEXCELのデータを入力するとき、ブランクを含む文字列が分割されてしまいます。また、欠損値があるとずれて入力されてしまいます。
これらを防ぐ方法はありますか。

[回答]

ブランクを含む文字列や欠損値を含むデータを正しく入力するには、INFILEステートメントでNOTABオプション、DLMオプション、またはMISSOVERオプションを指定してください。
また、それ以外のデータでも、切り捨てを回避するためにLRECLオプションを指定することをおすすめします。

指定例:


  INFILE exdata NOTAB DLM='09'X DSD MISSOVER LRECL=5000;

NOTAB、DLM、DSD、MISSOVERの各オプションは、下記のような働きをします。

NOTABオプション タブをブランクに置き換えません。
DDEではデータの区切りがタブですが、NOTABオプションが指定されていない場合は、タブがブランク(空白)に置き換えられて、ブランクを区切りとします。
そのため、ブランクを含む文字列やブランクのデータがあると、データがずれて入力されます。
DLMオプション 区切り文字を指定します。
なお「'XX'X」は16進コードを表し、「'09'X」はタブのコードです。
DSDオプション 区切り文字が連続する場合は、間に欠損値があるとみなします。
MISSOVERオプション INPUTステートメントの指定に対してデータが足りないときに、次の行に続きを読みにいきません(足りない分は欠損値とみなす)。