Tera TermのTTLマクロでiniファイル(hosts.ini)を読み込み、ホスト一覧を表示しようとしてもうまくいかないケースはよくあります。特に「system別にホスト情報を取得する構成」では、INIの読み込みパスやセクション指定、配列生成の方法に問題があることが多いです。本記事では、INIファイルが読み込めない原因と、ホスト一覧を正しく表示するための実装方法を整理します。
INIファイルが読み込めない主な原因
まず最も多い原因は「INIファイルのパス指定ミス」です。
Tera Termのマクロでは、カレントディレクトリが想定と異なる場合があり、相対パスで指定すると読み込みに失敗することがあります。
また「セクション名の不一致」や「日本語文字コードの問題」でもgetinivalueが正しく動作しないことがあります。
getinivalueの仕様と正しい使い方
TTLのgetinivalueは「セクション名」「キー」「格納変数」の順で動作します。
例としては以下の構造になります。
getinivalue ‘hosts.ini’ strSystem ‘count’ strCount
ここで重要なのは、iniファイルのセクション名(TESTやAシステム)が完全一致している必要がある点です。
ホスト一覧が取得できない典型的な原因
ホスト一覧が出ない場合、多くは「countは取れているが個別キーをループしていない」ことが原因です。
ini構造では「1=」「2=」のような連番キーを順番に取得する必要がありますが、TTLでは明示的なループ処理が必要です。
またstrdimで配列を確保しているだけでは表示用データは生成されません。
正しいホスト一覧取得の実装例
基本的にはcountを取得後、forループで各ホスト情報を取得します。
例。
for i 1 n
getinivalue ‘hosts.ini’ strSystem int2str(i) host
arrHostListDisp[i-1] = host
next
このようにすることでini内の1=〜n=までのホスト情報を正しく配列に格納できます。
日本語iniとパス問題への対処
日本語ホスト名(例:ホスト名日本語)が含まれる場合、文字コードの影響で取得に失敗することがあります。
UTF-8ではなくShift-JISで保存することで解決するケースが多いです。
またiniファイルはマクロと同じフォルダに配置するか、フルパス指定を行うと安定します。
まとめ
TTLマクロでiniファイルが読み込めない原因の多くは、パス指定・セクション名の不一致・ループ処理不足にあります。
特にホスト一覧の表示にはcount取得後のループ処理が必須です。
また日本語を含む場合は文字コードの影響も考慮する必要があります。


コメント