モジュール、サブルーチン共に同じ作業を何度もする場合に使います。 例えば、小さな画像をウインドウを埋め尽くすように表示する・・・なんて場合には 毎回repeat書いて・・・というのもいいですが、画面を埋め尽くす命令が一つあれば便利ですよね?
この命令を作る方法が、モジュールやサブルーチンになります。では、二つの違いは 何でしょう?
それは、モジュールは変数名を気にしなくてもいいのですが、サブルーチンは変数名を気にしなくてはいけません。普通の命令と同じように扱えるのモジュールです。つまり、自分で作ったモジュールは他の人に公開してもモジュールの中身を知らなくても自由に使うことが出来ます。サブルーチンも変数名の取り決めがキチンとされていれば同じように使用することが出来ます。早速、サブルーチンを見てみましょう。
;サブルーチンのサンプル
	data="段差表示"
	dx=100 : count=5
	gosub *step_mes
	pos 50,100
	gosub *step_mes
	stop

*step_mes
	repeat count
		mes data
		pos csrx+dx
	loop
	return
実行してもらえるとどのような動きをするかは分かると思います。(csrxはシステム変数で次にmes命令などで表示される座標Xを示します。カレントポジションといいます。)このように必要なところで何度もstep_mesという命令を使っているのと変わりません。ただし、表示したい文字列はdata、ずらしたい幅はdx、回数はcountの変数にいれなければ期待通りに動きません。
サブルーチンの書き方は、*でサブルーチンの名前を付けて、これで、サブルーチンの仕事は終わり…というところにreturnを書きます。(これはifを使って途中でreturnをしてもかまわないと言うことです。)
作ったサブルーチンを使う場合は、gosub命令を使います。サンプルを見ていただければ分かると思います。次に同じ内容のモジュールを見てみましょう。
;モジュールのサンプル
#module
#deffunc step_mes str,int,int
	mref data,32
	mref dx,1
	mref count,2
	repeat count
		mes data
		pos csrx+dx
	loop
	return
#global

	step_mes "段差表示",100,5
	pos 50,100
	step_mes "段差表示",100,5
	stop
なにやら、見慣れない命令が沢山有りますが…モジュールを作成している部分は#module〜#globalの部分です。その下は今まで通りに書いてあります。よく見るとstep_mesという命令でプログラムが書かれていますね。これがモジュールを使った場合の利点です。特に変数などは気にしなくてもいいのです。
モジュールの作り方は、#module〜#globalの間に書きます。また、プログラムの一番最初に書くものだと思ってください(命令を作った後にその命令が呼び出されれば、どこでモジュールを作っても問題有りません)。新しい命令は#deffuncで名前を付けることが出来ます。すでにある命令と同じにならないように気を付けましょう。その後ろは、パラメータとして、何を書くか決めます。変数か文字列か数字か…この三つのいずれかを指定します。詳しくはHELPを参考にしてみてください。
その後のmref命令は、パラメータにかかれた、数字や文字を変数に代入する命令だと思ってもらってかまいません。
HELPには、ローカルパラメータとかかれていますが、特に気にしなくてもいいと思います。この、サンプルを見ながらHELPを見ればいくらかわかりやすいかと思います。自分で便利なモジュールを作ってプログラムを楽に進めていきましょう。

■ 目次へ戻る ■

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル