TeraTermマクロでStack overflow発生

だいぶ前に作ったTeraTermマクロのUNIXサーバ運用作業自動化ツールでエラーが出たというので見に行くと、Stack overflowというマクロのエラーダイアログが。
要件的には、psコマンドで特定のJVMプロセス終了を持って次に進む、20回チェックして終わってないならダイアログを表示し、その前の処理に戻るという内容ですが、たまたま今回の作業中に長時間動作するプロセスが実行中となっており、psを11回実行したところで停止した状態になってました。
これまで何回も使われているマクロの自動化ツールですが、この事象は今回初めて。
ちょっとググるとすぐに下記が出たのでマクロスクリプトを見直したら、ループ中にgotoで飛ぶというダメな作りを痛感。。
https://osdn.jp/ticket/browse.php?group_id=1412&tid=8024
goto否定主義者では無いし、多重ループだと解りにくくなるので、素直にループの外にgotoを出して対応。

timeout=3

:BEFORE_PROC
~前処理の詳細は割愛~

ifdefined OUTPUTBUF
if result = 0 then
   strdim OUTPUTBUF 500
endif

CHK_COUNT_OVER = 20
CHK_COUNT_NUM = 0
:CHK_PROCESS_ASTART
OUTPUTCNT = 0

flushrecv
setsync 1
CMD = "ps -ef | grep -e JOB0010 -e JOB0020 -e JOB0030 -e JOB0040 -e JOB0050 -e JOB0060 "
strconcat CMD "-e JOB0070 -e JOB0080 | grep -v grep"
sendln CMD

recvln
while result = 1
   recvln
   if result = 0 then
      break
   endif
   OUTPUTBUF[OUTPUTCNT] = inputstr
   OUTPUTCNT = OUTPUTCNT + 1
endwhile
setsync 0

if OUTPUTCNT > 0 then
   CHKSTR = '/bin/java'
   for ii 0 OUTPUTCNT - 1
      strscan OUTPUTBUF[ii] CHKSTR
      if result > 0 then
         CHK_COUNT_NUM = CHK_COUNT_NUM + 1
         if CHK_COUNT_NUM >= CHK_COUNT_OVER then
            messagebox 'プロセスが実行中で作業を続行出来ません。'#13'状態を確認してくだい(OKで前処理から続行します)' OUTPUTBUF[ii]
            goto BEFORE_PROC
         else
            pause 3
            goto CHK_PROCESS_ASTART
         endif
      endif
   next
endif

上記の33行目以降を下記に変更

CHKSTATUS = 1

if OUTPUTCNT > 0 then
   CHKSTR = '/bin/java'
   for ii 0 OUTPUTCNT - 1
      strscan OUTPUTBUF[ii] CHKSTR
      if result > 0 then
         CHK_COUNT_NUM = CHK_COUNT_NUM + 1
         if CHK_COUNT_NUM >= CHK_COUNT_OVER then
            CHKSTATUS = 2
            messagebox 'プロセスが実行中で作業を続行出来ません。'#13'状態を確認してくだい(OKで前処理から続行します)' OUTPUTBUF[ii]
         else
            CHKSTATUS = 3
            pause 3
         endif
      endif
   next
endif

if CHKSTATUS = 2 then
   goto BEFORE_PROC
elseif CHKSTATUS = 3 then
   goto CHK_PROCESS_ASTART
endif