Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【JP1×HULFT】環境変数が原因? utlsendでエラーコード15・36が出たときの対処法

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

JP1などのジョブ管理ツールからHULFTの配信コマンド(utlsend)を実行した際、次のようなエラーを出してジョブが異常終了した経験はありませんか?

Plaintext

utlsend: An error occurred during character code conversion  → (Code 15)
utlsend: Cannot open sys information  → (Code 36)

手動(ターミナル)でコマンドを叩いたときは正常に動くのに、なぜかJP1経由だとエラーになる……。

このトラブルの主な原因は、「JP1の実行ユーザーに、HULFTに必要な環境変数(HULPATH / HULEXEP)が引き継がれていないこと」です。

今回は、このエラーの原因と、ジョブ定義側でサクッと解決する方法を解説します!

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

1. エラーコード「15」と「36」の意味は?

HULFTの公式マニュアルによると、それぞれの終了ステータス(エラーコード)には以下の意味があります。

  • Code 15:コード変換エラー 文字コードの変換に失敗した際に出るエラーです。HULFTが文字コード変換表(テーブル)の場所を見つけられない時に発生します。

  • Code 36:システム情報管理ファイルオープンエラー HULFTの動作に必要な設定ファイルや管理情報が開けないというエラーです。

どちらのエラーも根本的な原因は同じで、「HULFTの各種ファイルがどこにあるのか(パス)を、コマンドが認識できていないこと」にあります。

2. なぜJP1経由だとエラーになるのか?

LinuxやUNIX環境でログインした直後は、ユーザーの .bash_profile などの設定によって、自動的にHULFTのパス(環境変数)が読み込まれます。

しかし、JP1などのジョブ管理ツールから起動されるシェルやコマンドは、最低限の環境変数しか持たない「ノンログインシェル」として実行されるケースが多いのです。

そのため、HULFTの稼働に絶対必要な環境変数 HULPATHHULEXEP が空っぽの状態で utlsend が走ってしまい、前述のエラーを引き起こしてしまいます。

3. 解決策:JP1のジョブ定義に環境変数を追加する

解決方法はとてもシンプルです。 わざわざラッパースクリプトを作ってその中で export を書かなくても、JP1のジョブ定義の「環境変数」項目に、直接以下の2つを設定してあげるだけで解決します。

設定する環境変数

Plaintext

HULPATH=/XXX/hulft/etc
HULEXEP=/XXX/hulft/bin

(※ /XXX/ の部分は、お使いの環境のHULFTインストールパスに合わせて書き換えてください)

💡 ここがポイント

「シェルスクリプトじゃないから export HULPATH=... って書かないとダメ?」と思うかもしれませんが、不要です。 JP1のジョブプロパティにある「環境変数」欄に入力した値は、JP1の内部で自動的に export(展開)された状態でジョブが実行されるため、変数名=値 の形式でそのまま記述すればOKです。

合わせてチェック:コマンドを絶対パスで書いていない場合

もし、ジョブの実行コマンドに /XXX/hulft/bin/utlsend と絶対パスで書かずに、単に utlsend とだけ書いている場合は、環境変数 PATH にも /XXX/hulft/bin を追加するのを忘れないようにしてくださいね。

まとめ

HULFTの utlsend でコード15や36が出たら、まずは「環境変数が足りていない」ことを疑いましょう。

  • HULPATH(設定ファイルの場所)

  • HULEXEP(実行ファイルの場所)

この2つをJP1のジョブ側で明示的に指定してあげるのが、最も確実でメンテナンス性も高いスマートな解決策です。同様のトラブルでジョブが落ちて困っている方は、ぜひ設定を見直してみてください!

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