|
1.サブルーチンを使ってみよう!
長いプログラムを書くときはサブルーチンが重宝します。
-sub1.bas-
#!/usr/bin/scriba
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
CALL testsub
print "</html></body>"
SUB testsub
print "This is test!"
END SUB |
▼実行結果
CALL testsubまでは普通のプログラムです。CALLはサブルーチンを呼び出す命令です。
CALL サブルーチン名
ここではCALLでtestsubサブルーチンを呼び出しています。ではtestsubサブルーチンとは何でしょうか?
実はSUB testsubというのがtestsubサブルーチンなのです。
SUB サブルーチン名
プログラムをここに書きます
END SUB
testsubサブルーチンの場合、print "This is test!"を表示します。
END SUBにたどり着くと、呼び出し元であるCALL testsubに戻ります。
print "</html></body>"を実行して終わりです。
サブルーチンは長いプログラムで重宝しますと説明しました。
はっきり言って、今回のように短いプログラムでは重宝どころか混乱を招くだけです。
サブルーチンが役に立つのは第四章にあるような掲示板プログラムです。
必要性を感じてからこのページを読むと理解が早いです。
2.もっとしっかり理解しよう
-sub2.bas-
#!/usr/bin/scriba
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
for i=1 to 10
CALL testsub
next
print "</html></body>"
SUB testsub
print "This is test!<br>"
END SUB |
▼実行結果
This is test! This is test! This is test! This is test! This is
test! This is test! This is test! This is test! This is
test!
This is test! |
なぜ、This is test!が10回表示されたかあなたは説明できますか?
説明できたら、あなたにはプログラムの才能があります。説明できなくても問題ありません。
すぐに説明できるようになります。
最初の5行は普通のプログラムです。
for i=1 to 10 は nextまでの間にあるプログラム(CALL testsub)を10回繰り返せという意味でした。
CALLはサブルーチンを呼び出します。testsubが呼び出され、print "This is test!<br>"が実行されました。
<br>は改行を表すHTMLタグです。
今回は一行ですので直接for〜nextの中にいれても影響ありませんが、何行もあるプログラムの繰り返しだったらどうでしょう?
例えば上のプログラム、どこからどこまでが繰り返しかちょっとわかりにくいですよね。
next_aなんて変数があるから尚更です。こんな場合はサブルーチンを使いましょう。
サブルーチンは難しく感じますが、実はその逆です。
人間がわかりやすいようサブルーチンを使うのです。
3.引数を使おう
サブルーチンでは引数というものが使えます。
-sub2.bas-
#!/usr/bin/scriba
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
CALL testsub(10,20)
CALL testsub(12,22)
CALL testsub(12,34)
print "</html></body>"
SUB testsub(a,b)
print "a+b=",a+b
print "<br><br>"
END SUB |
▼実行結果
CALL サブルーチン名(引数1,引数2,引数3)
引数は好きなだけ決めることができます。
CALL testsub(10,20)でtestsubを呼び出しています。引数1は10,引数2は20です。
testsubの引数1はaが指定されており引数1の内容(値)はaに代入されます。引数2はbに代入されます。
変数aと変数bを足して、表示します。変数aには10、変数bには20が代入されているので10+20で30となります。
同じようにCALL testsub(12,22)でtestsubを呼び出しています。引数1と引数2を足し算し、その結果を表示し、
戻ります。最後はCALL testsub(12,34)です。12+34を計算、表示し戻ります。 |
|