過去の桐井戸端BBS (桐ver.5)
181 エラー274(手続きの入れ子が深すぎます) 内山 幸則 1998/4/22-14:00
はじめてアクセスしました
どなたかお教え頂きたいのですが桐 Ver4で 一括処理の際 時折エラー274「手続きの入れ子が深すぎます」と表示され 入力したデータが消えてしまいます。
一括処理のプログラムを作成した担当が退職しており解決の方法がわかりません。
182 Re: 幅田 1998/4/22-21:46
これは困りましたね。手続きの入れ子は、ver.4でもver.5でも最大20重までなんです。
それを超えてしまうとは、相当複雑な一括処理を組んであるものと思われます。
時折というのはおそらく、ある条件の時に手続きを実行するようにしてあるからなのでしょう。
一括処理の組み方に問題があると思われるのですが、そこまで複雑そうな一括処理であれば、桐を知っている人でも解析するのにある程度時間がかかるように思います。
作成した人に頼むのが一番手っ取り早いのかな?

参考)手続きとは?

桐の一括処理のコマンドで、サブルーチンを実行する時に使います。
「手続き実行」コマンドでサブルーチンに飛び、「手続き終了」コマンドで
戻ってきます。

書き方)
*****************************************
手続き実行 サブ1
手続き実行 サブ2

名札 サブ1
コマンド群(いくつかのコマンドを続けて実行する)
手続き終了

名札 サブ2
コマンド群
手続き終了
********************************************
手続き実行はBASIC等のGOSUB文に、名札はLABEL文に相当します。
(サブ1とサブ2は任意の文字です。)

手続き実行 サブ1
を実行すると、サブ1という名札まで飛び、その次のコマンド群を
実行して手続き終了を見つけると元にもどり、その次の文を実行します。
例で言うと、手続き実行 サブ2を実行するので、サブ2まで、
飛んでその次のコマンド群を実行し、また手続き終了で戻ってきます。

手続き実行中のコマンド群の中に、さらに手続きを実行することができます。
そのことを入れ子といい、それが20重を超えているという訳です。
183 Re:ネスティング過多 Ogo 1998/4/23-01:17
これは多分サブルーチンコールしたものを、分岐で戻しているからという可能性が高いです。

名札 メインルーチン
   (途中省略)
   手続実行 サブルーチン

名札 サブルーチン
   (途中省略)
   分岐 メインルーチン

と、このような処理手順を書いているからということです(正しくは、サブルーチン側では「手続終了」で戻します)。
入り組んだ処理・複雑な処理を記述する際に、よくあることです。

またはサブルーチンで呼び出す先がメインルーチンの中にあって、ループしているとか。

どちらの場合も一括処理(.cmd)を添削する以外に解決策はないと思いますが、症状だけがわかっても、原物が手元にないと添削は不能です。
当然、作成した方に修正してもらうのが最善ですが...
184 Re: アックン 1998/4/23-10:09
幅田さん、Ogoさん>
こんにちは。いつもお世話になってます。
手続き実行を分岐に書き換えるだけでいいですよ。
  #s([],"手続き実行","分岐")
私は分岐コマンドを一切使いませんけど。(^^;
185 アックン 1998/4/23-11:39
あっ、やっぱりマズイ。(^^;
手続き終了を正しく使っている箇所があったらアウトだもんね。

戻る