モジュール機能とはスクリプトを整理し再利用可能にするための仕組みです。(HSPマニュアルより)
ユーザー定義命令と組み合わせれば、スクリプトをよりシンプルに書くことができます。
命令を定義するには#deffuncを使います。
#deffunc 命令の名前で定義できます。#deffuncからreturnまでの間が命令の内容になります。
サブルーチンと似ていますが、注意しなければいけないのは、
必ず命令の定義位置より後に命令を書かなければならない点です。
モジュール空間とは、変数名やラベル名を独立して扱える領域のことです。
#moduleと#globalで囲まれた部分がモジュール空間になります。
下のサンプルでは、testという命令を定義して使っています。
モジュール空間の変数aとその外にあるaが別物である事に注目してください。
#module #deffunc test mes a a++ return #global a = 10 test test test mes a
また、ユーザー定義命令にはパラメータを渡す事が可能です。
#deffunc 命令の名前 パラメータタイプ1 エイリアス名1,・・・
パラメータタイプは以下の中から選びます。エイリアスは、ほとんど変数と同様のものです。
| タイプ | 内容 |
| int | 整数値 |
| var | 変数(配列なし) |
| array | 変数(配列あり) |
| str | 文字列 |
| double | 実数値 |
| label | ラベル |
| local | ローカル変数 |
下のサンプルは、文字列と整数値をパラメータとして受け取り、文字列aをb回表示します。
#module #deffunc test str a, int b repeat b mes a loop return #global test "テスト",3
#defcfuncで関数も定義できます。
定義命令と違い、returnで返り値(パラメータ)を指定する必要があります。
下の関数はaのb乗を返します。
#module #defcfunc power int a,int b x = 1 repeat b x = x * a loop return x #global mes power(3,5)