*

[C#,AS400]C#でAS400のプログラムCallとコマンドの実行方法。

公開日: : 最終更新日:2015/01/09 AS400, C#, i Series, RPG3, System i

PCのプログラムからCall

AS400のRPGPGMをPCから呼び出ししたいときがあります。
FTPでコマンドをCallしたりも出来ますが、かゆいところに手が届かない。
最初のころは知らなくてソケット通信のプログラムを作成して、無理やりCallしたりしていましたが、
Client Accessには便利なdllがあるので、その利用方法です。

使い方

cwbx.dllの場所

cwbx.dllというライブラリがAS400のRPG等をCallするためのAPIになっています。
利用するためには参照設定から追加しなくてはなりませんが、問題はこの「cwbx.dll」はどこにあるのか、ということですね。
32bit環境であれば
C:\Program Files\IBM\Client Access\Shared\cwbx.dll
64bit環境であれば
C:\Program Files (x86)\IBM\Client Access\Shared\cwbx.dll
上記に存在しています。

というわけで参照の追加からさくっと追加します。
cwbx.dll 参照の追加
cwbx.dll 参照の追加

準備は完了です。

ソース

using cwbx;

class AS400Program {
	private const string User = "HOGE";
	private const string Password = "HOGE";
	private const string Host = "192.168.0.2";

	public void CallProgram() {
		AS400System system = new AS400System();
		system.Define("AS400");
		system.UserID = User;
		system.Password = Password;
		system.IPAddress = Host;
		system.Connect(cwbcoServiceEnum.cwbcoServiceRemoteCmd);

		if (system.IsConnected(cwbcoServiceEnum.cwbcoServiceRemoteCmd) == 1) {
			// コマンドの実行
			var cmd = new cwbx.Command();
			cmd.system = system;
			cmd.Run("ADDLIBLE HOGED");			// データライブラリ

			// プログラムの実行
			var program = new cwbx.Program();
			program.LibraryName = "HOGEO";		// ライブラリ名
			program.ProgramName = "HOGE01R";	// 実行したいプログラム
			program.system = system;
			try {
				program.Call();
			} catch (Exception) {
				throw;
			}
		}
		system.Disconnect(cwbcoServiceEnum.cwbcoServiceAll);
	}
}

HOGEOというライブラリに存在するHOGE01RというRPGをCallしています。
HOGE01RはHOGEDに存在するファイルを扱うプログラムという想定です。

解説

コマンドの実行

var cmd = new cwbx.Command();
cmd.system = system;
cmd.Run("ADDLIBLE HOGED");			// データライブラリ

今回のHOGE01RはHOGEDに存在するファイルを利用するので、ライブラリを追加しています。
ちなみに、ライブラリを追加せずにプログラムを実行すると、*LIBLにファイルが存在しないため、メッセージウェイトになります。
CLを作ってライブラリリストに追加するようにしてもいいのですが、今回は面倒なのでADDLIBLEコマンドを実行させました。

万が一間違ってWaitになったら、AS400にコンソールで接続して、WRKACTJOBか何かでキャンセルしてください。
QZRCSRVSというジョブで実行されています。

プログラムの実行

var program = new cwbx.Program();
program.LibraryName = "HOGEO";		// ライブラリ名
program.ProgramName = "HOGE01R";	// 実行したいプログラム
program.system = system;
try {
	program.Call();
} catch (Exception) {
	throw;
}

実行プログラムのライブラリとモジュールを指定して実行しています。
なお、メッセージウェイトになった場合は、返答して初めて例外処理がされます。

こんな感じでご利用くださいませ。

ad

関連記事

logo

[iTextSharp,C#]TifファイルをPDFに変換する。

TifファイルをPDFに変換してほしいと言われて作ったときのソースのメイン部分を抜粋です。 確

記事を読む

instantiate cube unity

[Unity]コードリファレンス GameObjectの複製

GameObjectを複製します。 Object.Instantiate(Object ori

記事を読む

wannabenote

[java, NetBeans, AS400]NETBEANSで作成したjavaプロジェクトをAS400上で実行する。

概要 NetBeansでコンパイルしたものをそのままAS400に実行させます。 また、NetBe

記事を読む

unity

[Unity]コードリファレンス GameObjectを親子関係にする。

親子関係にして、親が動いたら子も動くような動きをさせます。 transform.parentプ

記事を読む

unity move

[Unity]コードリファレンス GameObjectを移動する。

移動します。 transformプロパティ GameObjectのtransformプロパテ

記事を読む

logo

[Unity]Unity 2Dチュートリアル スプライトを元の位置に戻す ソース解説

◆全文 using UnityEngine; using System.Collection

記事を読む

visualstudio_

[visual studio]ODBC等のConnection Stringの簡単な作り方

Connection Stringって大体いつも検索して、それを使ってみて、だめだったりOKだったり

記事を読む

Unity_

[Unity]Unity 2Dチュートリアル スプライトをクリック(タップ)して削除する

前回、スプライトを置くことが出来たのですが、動かせるようにしたいところです。 ドラッグして動

記事を読む

unity rotate worldpoint

[Unity]コードリファレンス GameObjectを回転する。

くるくる回します。 rotationプロパティ Objectの向きをワールド座標で指定します

記事を読む

AS400_

[java, JDBC]AS400からOracleに接続をする

javaでAS400からOracleに接続する必要があったときのメモを清書。 AS400のPG

記事を読む

ad

Comment

  1. Johnf63 より:

    I think you have noted some very interesting points , appreciate it for the post. edcdaeedfgcd

  2. Johnd378 より:

    An fascinating dialogue is value comment. I believe that it is best to write more on this matter, it might not be a taboo topic but generally individuals are not sufficient to talk on such topics. To the next. Cheers dgcgaefegfdk

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑