
本記事は、コマンドプロンプトやバッチファイルから、クラスメソッドを実行する方法を解説します。
※お断り:windowsマシンでの内容になります
はじめに
IRIS/Cacheで開発していると、外部システム(コマンドプロンプトやバッチ等)からIRIS/Cacheへアクセスしたい場面に遭遇する時があります。
例えば、日次バッチ内の一環として、他のコマンドを処理しつつ「IRISのクラスメソッドを呼び出す」等です。
本記事では、「コマンドプロンプト」や「バッチファイル」からクラスメソッドを呼び出す構文や、認証設定について解説します。
頻繁に出番がある内容では無いですが、実行方法を知っていて損をする事はありません。
はりきっていきましょう!
実行コマンド
実行コマンドは下記になります。
クラスメソッドからの戻り値を取得する事が出来ない為、実行するコマンドは全てDO実行となります。
では、下記環境でコマンドプロンプトからIRISのクラスメソッドを呼び出す場合、どのようなコマンドになるでしょうか。
項目 | 説明 |
---|---|
IRISインストールディレクトリ | D:\IRIS |
インスタンス名 | IRIS |
実行コマンド | Do ##class(developer.Sample).PromptDo(“test”) |
ネームスペース | SAMPLE |
【実行コマンド】
D:\IRIS\bin\iris run IRIS ##class(developer.Sample).PromptDo(\"test\") SAMPLE
【解説】
■IRISインストールフォルダ配下の「bin」フォルダにある「iris.exe」を実行する形になります。
※ Cacheであれば「Ccontrol.exe」
■実行コマンド「Do」は省略します。
■文字のエスケープ
引数の「”」は、エスケープする必用があります。
「”test”」 → 「\“test\“」になります。
文字 | エスケープ | 参考例 |
---|---|---|
^ | ^^ | 例)^Sample → ^^Sample |
“ | \” | 例)”test” → \“test\“ |
% | %% | 例)%SYSTEM → %%SYSTEM |
※システムクラスの実行は、上記により「##class(%%SYSTEM.OBJ).LoadDir(\“[dir]\“)」になります。
う・・・動かん・・・
コマンドが正しくても動かない場合は、サービス「%Service_Console」の認証方法を確認してみて下さい。
本記事の実行方法では、ユーザ名やパスワードを入力するタイミングがありません。
そのため、パスワード入力が必要のない認証方法に変更を行う必要があります。
管理ポータルを起動し、[システム管理] > [セキュリティ] > [サービス]より「%Service_Console」をクリック

認証方法がパスワードになっている場合、先ほども記述した通りパスワードを入力するタイミングが無いため、認証する事ができません。
そのため、認証方法を変更する必要があります。
※ 認証方法を変更する事に問題が無いかは、ご確認下さい。
【変更方法】
認証方法を「パスワード」から「オペレーションシステム」に変更します。
とは言え、初期状態では「オペレーションシステム」の選択肢が表示されていないので、先ずは選択肢の表示から始めます。
管理ポータルから、[システム管理] > [セキュリティ] > [システム・セキュリティ] > [認証/ウェブセッションオプション]より「認証/ウェブセッションオプション」画面を開きます
「OS認証を許可」にチェックを入れて、「保存」ボタンから設定を保存します。

再度サービス画面から「%Service_Console」を開くと、「オペレーションシステム」が表示しています。
「パスワード」から、「オペレーションシステム」へチェックを切り替えて保存します。

さて、いかがでしょうか?
大体は認証方法の変更で動作するはずです。
お試しください。
コマンド、動け! コマンド、なぜ動かん……!
特殊な例だとは思いますが、ここまで設定しても動かなかった例がありました。
コマンドプロンプトからの実行は行えたのですが、特定のシステムから実行すると動きません。
どうやっても動かなかったので、コマンドラインの一部に下記コマンドを追加し、実行ユーザを確認してみました。
>whoami
nt authority\system
Oh…
コマンドの実行ユーザが、windowsのログインユーザでもなければ、IRISのインストールユーザでもありません。
はい。
原因は、IRISにログインするためのユーザに「system」が居ない事でした。
そのため、IRISに下記ユーザ「SYSTEM」を作成し解決です。

ユーザの名前は大文字の「SYSTEM」です。
小文字の「system」では認証しませんでした。
→ この大文字小文字問題が更なる混乱の元に・・・
パスワードは任意で大丈夫です。
※ 今回は「SYS」としました
どうしても動かないときは、念のため実行ユーザを確認してみて下さい。
おわりに
いかがだったでしょうか。
本記事では、IRIS/Cache環境においてコマンドラインからクラスメソッドを実行する方法をご紹介しました。
一見ニッチで出番の少ない実行方法ですが、定期処理の自動化や、他システムとの簡易的な連携など、知っておくと意外な場面で役立ちます。
コマンドが正しいのに動かない場合は、環境依存の要因が隠れていることも多いため、焦らず順を追って確認してみることが大切です。
少しでも皆さまの業務や検証作業に役立つきっかけとなれば幸いです。
今後もこうした「知っていると便利」なTipsをお届けしていきますので、ぜひ活用してみてください。