Tera Term(TTLマクロ)でiniファイルが読み込めない原因とホスト一覧表示の正しい実装方法

プログラミング

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取得後のループ処理が必須です。

また日本語を含む場合は文字コードの影響も考慮する必要があります。

コメント

タイトルとURLをコピーしました