ECLOSE_METHOD

Perform application close processing

WSupported on Windows
USupported on Unix
VSupported on OpenVMS
NSupported in Synergy .NET
subroutine ECLOSE_METHOD
   a_noclr      ,n
   a_cancel     ,n
   a_type       ,n

a_noclr

Returned with any no_clear flag passed to U_FINISH. (n)

a_cancel

(optional) The cancel shutdown flag which is passed to U_FINISH. (n)

a_type

The flag defining the type of shutdown in progress: (n)

0 = U_FINISH was called directly.

1 = The user is closing the application.

2 = An interrupt (^C) was received.

ECLOSE_METHOD is a subroutine that you write and name. The name of your subroutine is registered with UI Toolkit using the E_METHOD subroutine. UI Toolkit calls your ECLOSE_METHOD subroutine to allow customized shutdown processing for your application.

An ECLOSE_METHOD method should return after processing and should include TRY and CATCH blocks to catch potential exceptions. It should not include a STOP statement or cause an untrapped error.

If a_cancel is passed, this method can set it to true to cancel application shutdown if you passed the cancel argument to U_FINISH.

The following method would have to be registered in the transaction routine’s environment.

subroutine trx_close
; 
; Description: Close method for transaction entry 
; 
; Arguments: 
; 
        a_noclr     ,n   ;"No clear" option for U_FINISH 
        a_cancel    ,n   ;(Optional) cancel shutdown flag 
  
        a_type      ,n   ;Type of shutdown: 
                         ;  1 = Close 
                         ;  2 = Interrupt 
.include "trxgbls.def"   ;Global fields (g_changes, etc.) 
; 
.align 
record 
        style       ,i4   ;Message box style 
proc 
        if (g_changes)    ;Are there unsaved changes 
                          ; to the transactions? 
          begin 
            if (^passed(a_cancel)) then        ;Can we cancel 
                                               ; shutdown? 
              style = D_MYESNOCANCEL           ;Yes, include 
                                               ; cancel button 
            else 
              style = D_MYESNO                 ;No, only allow 
                                               ; yes/no 
            style = style + D_MICONEXCLAM      ;Put an exclamation 
                                               ; icon on 
            using %u_msgbox("Save changes to transactions?", style) select 
            (D_MIDYES),   call save            ;Save the transactions 
            (D_MIDNO),    nop                  ;No action required 
            (D_MIDCANCEL),a_cancel = TRUE      ;Cancel shutdown 
            endusing 
          end 
        xreturn 
 
save, 
        ;Insert code here to save all changes to 
        ; transaction file 
        return 
endsubroutine

The following code shows how you would use E_METHOD to register this method:

proc 
        xcall e_enter 
        xcall e_method(D_METH_APPCLOSE, "trx_close") 
        . 
        . 
        . 
        xcall e_exit 
        xreturn 
.end