ユーザスクリプトの作成 10


ユーザスクリプトの作成方法には、
「展開一番」スクリプトだけを利用して作成する方法(以下、「呼出法」という)と、「展開一番」スクリプト以外にRubyによる制御構造などを利用して作成する方法(以下、「展開法」という)の二種類があります
そもそも、「展開一番」(狭義)は、「呼出法」だけでユーザスクリプトを作成することを目的として開発されたものです、したがって、この方法によって、ほとんどの会計処理を行うことができます
ユーザスクリプトはテキストファイルです、ファイル名は ssss.rb とします
ssssには任意の名前を付けることができます

1.呼出法
「呼出法」では、冒頭に「require "t1"」と記述します、この記述により、「展開一番」のスクリプト(正確には、t1ライブラリに含まれるスクリプト)を利用できるようになります
二行目以降に会計処理を行う「展開一番」のスクリプトを記述します、記述した順番にスクリプトが実行されます
以下は、「呼出法」で作成した試算表作成スクリプトの例です
スクリプトの後ろのカッコ内には、当該スクリプトの動作方法を指示するパラメタを記載します
スクリプトごとのパラメタの詳細はスクリプトの解説を参照してください
各スクリプトの機能については、サンプルスクリプトの「試算表」をご覧下さい


require "t1"
MkF1YA2ZTB()
Sel9MA1XJ2WXJ_SetV("m","J_M",0,0)

MkF1WXJ2WSumDC()
Pst1WSumDC2ZTB(0,0)
Cal7Bal12ZTB(3)


2.展開法
「展開法」は、Rubyによるプログラミングそのものですが、ここでは、「展開一番」のスクリプトを利用した簡単な方法を説明します
なお、「展開法」は、「展開一番」のスクリプトを並べただけでは実現できない処理を行うときに利用する方法であり、元帳を一括して作成するために「展開一番」のスクリプトを繰り返し実行するときや、基本マスタのデータを利用して試算表を作成するときに、この方法でスクリプトを作成します

「展開法」によるユーザスクリプトの基本形は以下のようになります
#------------------------------------
1:def sss()
2: require "t1"
3: ---
4: sA
5: sB
6:end
7:sss()
#-------------------------------------
1:のdefから6:のendまでがプログラム(正確には、ユーザ定義のメソッドといいます)部分で、def後のsssがこのプログラムの名前(ファイル名ではない)になります、sssには自由な名前を付けることができます
7:は、自分自身で作成したメソッドを実行するコードであり、これによりプログラムsssが実行されます
2:は、「展開一番」のスクリプトを使用する宣言文で、これにより「展開一番」のスクリプトA(sA)やスクリプトB(sB)が利用できるようになります、ここでは4:と5:で実行されます
3:の---には、必要に応じてRubyの式などを記述します
---、sA、sBは、def...end内であればどこに記述しても、また、幾つ記述しても構いません

「展開法」によるユーザスクリプト作成の必要性は少なく、また、そのパターンも限られているので、Rubyの文法を覚える必要はないと考えます
サンプルスクリプトを参考にして、一部を実態にあわせて書き換えればよいと思います
以下は、元帳作成のスクリプトを「展開法」で作成したものです、元帳作成科目、元帳作成期間をスクリプト冒頭で変数に代入する形式にして、使い易くしたものです
各スクリプトの機能については、サンプルスクリプトの「元帳と補助元帳」をご覧下さい
def p_GL_0()
#----------------(値を変数に代入する式)---------------------
$GLCode=6010
$fDate="20030401"
$tDate="20040331"
#----------------(「展開一番」スクリプトを連続実行する)-----
require "t1"
Sel9MA1XJ2WXJ_SetV("m","J_Date",$fDate,$tDate)
MkF7BgF1ZTB2ZGL($GLCode)
Sel1WXJ2WGL($GLCode)
Con12WGL_FormGL($GLCode,$GLCode,"")
Apd7WGL9Bal12ZGL($GLCode)
#-----------------------------------------------------------
end
#----------------(上記メソッドを実行する)-------------------
p_GL_0()

(註)
サンプルスクリプトでは、その内容を以下の色で区分しています
:「展開一番」ライブラリの使用宣言
:「展開一番」スクリプト
■:Rubyの式




3.展開法と呼出法の組み合わせ
上記元帳作成スクリプトのメソッドを独立させて、他のスクリプトから呼び出して実行することができます
この場合は、上記スクリプトを以下のように書き換えます
ファイル名を「aaa.rb」とします

def p_GL_0(vCode,tag,vD1,vD2)
require "t1"
Sel9MA1XJ2WXJ_SetV("m",tag,vD1,vD2)
MkF7BgF1ZTB2ZGL(vCode)
Sel1WXJ2WGL(vCode)
Con12WGL_FormGL(vCode,vCode,"")
Apd7WGL9Bal12ZGL(vCode)
end

次に、このaaaスクリプト(メソッド)を呼び出して実行するスクリプトを作成します
内容は以下のようになります、ファイル名をbbb.rbとして、Rubyから実行すると、2.のスクリプトと同じ結果を得ることができます(aaa、bbbには自由な名前を付けることができます)


require "aaa"
p_GL_0(6010,"J_Date","20030401","20040331")

aaaファイルには、def以下で定義されたp_GL_0というメソッドがあるので、ファイルbbbの冒頭でこの使用宣言を行います
2行目で、p_GL_0メソッドを呼び出し実行しますが、カッコの中に、4つのパラメタを記述します
この値は、p_GL_0メソッドのカッコ内の変数に対応して代入されます、例えば、vCodeには6010がセットされ、以降のスクリプト中のvCodeには6010という値が代入されることになります
この例では、ファイルaaaには一つのメソッドしかありませんが、複数のメソッドを含めることもできます
def name1()...end、def name2()...endと続けて記述することができます
「展開一番」のライブラリt1.rbも同様の方法で作成されています、「require "t1"」とすることで、これに含まれる数多くのメソッドを呼び出して利用できるようになっています



Last Update 20220119