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

【JP1/AJS】ジョブネットのコメントに「#」を使うと定義出力で「##」になる怪現象!その理由と安全性は?

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

こんにちは!JP1/AJSのジョブ設計やバックアップ運用、日々お疲れ様です。

JP1のジョブネットやジョブのプロパティには、用途やメモを残せる「コメント」欄がありますよね。 そのコメント欄に、何気なく #(シャープ) という記号を使って、以下のように記載したことはありませんか?

Plaintext

コメント例: #1処理用のジョブネット

これを、ajsprint コマンドなどでテキストファイルに定義出力(退避出力)して中身を確認してみると……

Plaintext

cm="##1処理用のジョブネット";

「あれ? シャープが『##』に増えてる!? もしかして文字化けか定義の破損……?」

と、ちょっと不気味に感じた経験がある方もいるかもしれません。今回は、この現象が起きる理由と、そのまま運用しても大丈夫なのか(安全性)について解説します!

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

1. 結論:これはJP1の正常な仕様(エスケープ処理)です!

結論から言うと、これはバグでも異常でもなく、JP1/AJSが正しく定義を出力するための正常な仕様(エスケープ処理)です。

なぜこのような変換が行われるかというと、JP1の定義テキストファイル内において、# という記号は「環境設定パラメータ」や「コメント行」などを表す、システム用の特別な意味を持つ文字(制御文字)だからです。

もしコメント内の # をそのまま出力してしまうと、JP1が定義ファイルを読み込む(回復する)際に、「ここから先はシステムへの命令かな?」と誤解してしまい、エラーの原因になってしまいます。

そのため、JP1は「このシャープはただの文字(コメント)ですよ!」ということを証明するために、自動的に # を重ねて ## に変換(エスケープ)して出力しているのです。

2. 回復(インポート)するとどうなる?

一番心配なのは、バックアップからジョブネットを復元(ajsdefine などで回復入力)したときに、コメントが「##」のままになってしまうのではないか、という点ですよね。

これも心配ありません。 JP1は定義ファイルを読み込む際、「『##』という並びを見つけたら、元の『#』1文字に戻して画面に表示する」という逆の処理(デコード)を自動で行ってくれます。

そのため、回復後のAJS View画面を開いてプロパティを確認すると、何事もなかったかのように綺麗に元の「#1処理用のジョブネット」に戻っています。

3. それでも、ジョブネットのコメントに「#」は使わない方が良い?

仕様としては完全に安全であることが分かりましたが、運用の現場目線で言うと「可能であれば『#』は使わない(または別の文字に代替する)方が無難」と言えます。

理由は以下の2点です。

  • 他社製のツールや自作スクリプトでパース(解析)しづらくなる 定義テキスト(ajsprint結果)をExcelに変換したり、Pythonやシェルスクリプトで読み込んで「ジョブネット定義一覧」を自動作成したりする運用を行っている場合、この ## のエスケープ仕様を考慮してコードを書かないといけないため、実装が面倒になります。

  • 運用担当者が「不気味」に感じて混乱する 今回のように、仕様を知らない後任の担当者やオペレーターが定義ファイルを見たときに、「設定ミスでは?」と不要な不安や確認の手間(オオカミ少年効果)を生んでしまいます。

💡 おすすめの代替案

シャープをどうしても使いたい場合は、以下のような代替表記にするのがおすすめです。

  • 全角の「#」を使う(全角であればシステムに干渉しないため、そのまま「#」と出力されます)

  • 「No.1」や「第1」などの表記に変える

まとめ

  • コメントに # を使うと、退避出力ファイルでは ## にエスケープされる。

  • 回復(インポート)すれば、自動で元の # に戻るのでシステム的な問題はない

  • ただし、テキストでの可読性やスクリプト運用のしやすさを考えるなら、全角の「#」や「No.」で代用するのがベスト。

一見すると不気味な現象ですが、中身はJP1が誤動作を防ぐために裏で頑張ってくれている証拠です。仕様を正しく理解して、日々のジョブ運用に役立ててくださいね!

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