さわらブログ

さわら(@xhiroga)の技術ブログ

returnの神様

returnの神様

2018年6月30日訂正:RPGにもLEAVEというのがあり、Javaのreturn同様にサブルーチンを途中で抜けることができます。
以下の記事は十分な知識がない状態で書いたものです。

RPGには現場でたまたま自分が担当したサブルーチンにはLEAVE(returnに相当)がない。
(ちなみにクラスもない。現場で見た限りは...)

だからネストが深くなるんだってことに今日気がついてちょっと感動した。
より正確にはこんな感じ。
* サブルーチン(メソッドでもいい)は、基本的に処理を最後までやるように作られている。
* プログラムでは、処理結果に応じて処理を続けるかやめるかを判断することがある。
(多分リソースの状態に関心があるのでは。帳票をある状態にするとか、データの状態が期待値になるまで続ける、とか)
* サブルーチンで更新をすると、処理を途中でやめられないので、if文で括るしかなくなってしまう。

(GOTO文とか使えば別なのかもしれない。っていうか、returnって実質縛りのあるGOTO文では?)

例えば

@A1000 *IN93
*IN93 IFEQ *OFF
@A1100
...
...
...
ENDIF

RPGを書いたことがないのでテキトーです)

こんな風に、残りの作業をずっとIFのなかで過ごすことになる。

Javaとかなら

int updateCount = client.update();
if (updateCount > 0) { return; }
client.insert(dto)
...
...
...

ちょっと見やすくなった。 returnの発明って誰がしたんだろう。ありがたいなー。