【AS400】AS/400でシェルを使いたい【IBM i】

最近、業務でAS/400、IBM iを扱っていて、その備忘録として。

AS/400は基本的にはRPGで操作されている。UNIXライクなシェルとしては、Qshellというのが搭載されていて、サインオン画面の(サインオンしてからEnter, Escで出てくる)コマンド入力画面で「qsh」とするとQshell操作画面に入れる。

ちなみに、「qsh」と打つ前には「CHGJOB CCSID(5035)」というおまじないを打つ必要がある。
これは、言語系の設定をするおまじないで、これをしないと小文字を認識してくれない。
あと、なんかAS/400が文字化けしていたら、「Ctrl + F3」で文字化けがなおる。
この知識はAS/400に詳しい方に教えていただいたので、どういうことが起こっているのかはよくわからないけど、文字コード系をこれまでにどうにかこうにかしようとしてきた結果らしい。

Qshellを立ち上げていったんシェルが使えるようになった、、、と思った?

確かにコマンド操作はできるんだけど、Qshellはシェルスクリプトの実行ができない!!(業務的には致命的すぎる欠陥orz)

さて、ここでどうするか。

解決策は一応あるが、万能ではない。ただ、Qshellよりだいぶまし。

さきほど「qsh」としてQshellを立ち上げた画面で「call qp2term」とする。
これで何が起こるのか。

なんとKorn Shell(もどき)が立ち上がります!!

この機能はシェルAPI?って感じで、Korn Shellライクな機能が使える。もちろんシェルスクリプトも実行できる。ksh93も立ち上げられる。

簡単なスクリプトは問題なく使えるが、awkを使ってログ出力の各行頭にタイムスタンプをいれたい、みたいな処理はなぜか構文エラーで使えなかったりする。

完全なるKorn Shellというわけではないところは注意。
ただ、一般的な使い方はできるので、AS/400でシェル使ってみようかなって人は試してみてね。

AS/400でのシェル系の情報あればコメントでお願いします。