I'm trying to patch armax. The key moment is treating of $error
Command ref. says one should use catch prefix alongside.
I tried context search for "catch" in armax.gfn and didn't find any.
Is $error behavior different in loops?

A fragment for quick reference

# begin of armax.gfn fragment 
loop q = 0..maxq -q
      # estimate model
      if nelem(xlist)=0
        if p=0 && q=0
          # p,q=0 時, 一定要有 const, 不然會有參數數目不足之 error
          arima p q ; y -q @eMethod
        else
          arima p q ; y -q @eMethod @sCons
        endif
      else
        arima p q ; y xlist -q @eMethod @sCons
      endif
      err = $error
      if (err)
        printf "Got error %d (%s)\n", err, errmsg(err)
      endif
      if isnull($aic)=0
        printf "Got error,p=%d,q=%d\n",p,q
      else
        @tabname[nrow,1] = p
        @tabname[nrow,2] = q
        @tabname[nrow,3] = $aic
        @tabname[nrow,4] = $bic
        @tabname[nrow,5] = $hqc
        # test for mininum noise model
        if nrow=1
          min_aic = $aic
          min_sc = $bic
          min_hq = $hqc
          order_aic = nrow
          order_sc = nrow
          order_hq = nrow
        else
          if $aic < min_aic
            min_aic = $aic
            order_aic = nrow
          endif
          if $bic < min_sc
            min_sc = $bic
            order_sc = nrow
          endif
          if $hqc < min_hq
            min_hq = $hqc
            order_hq = nrow
          endif
        endif
      endif
      nrow = nrow+1
    endloop
# end of armax fragment

!