There is a subroutine that you have to provide. The subroutine name is DASH_DECL, but it is best if you name the file MYPROGRAM.FOR, where MYPROGRAM is what you will call your executable. MYPROGRAM.FOR will have a very short main PROGRAM section which calls DASH_CLI. The rest of the file is a subroutine named DASH_DECL that DASH will call. A complete example (including comments) is included in appendix A.
The DASH_DECL subroutine is used to list the entrypoints of all of the modules you intend to link with your program. Lets say you have copied a working example from someone and wish to add your own analysis module. Here are the modifications you make to the DASH_DECL subroutine. First, make subroutine calls which declare to DASH the name of your module and which entrypoints you have written:
c
c Declarations for module MYANA:
c ==============================
CALL DASH_DEC_MOD('MYANA','INI',MYANA_INIT)
CALL DASH_DEC_MOD('MYANA','BEG',MYANA_BEGINRUN)
CALL DASH_DEC_MOD('MYANA','EVT',MYANA_EVENT)
CALL DASH_DEC_MOD('MYANA','END',MYANA_ENDRUN)
CALL DASH_DEC_MOD('MYANA','TAL',MYANA_TALK)
CALL DASH_DEC_MOD('MYANA','BOO',MYANA_BOOK)
CALL DASH_DEC_MOD('MYANA','FIN',MYANA_FINISH)
You also must declare (to FORTRAN) the subroutine names as EXTERNAL:
EXTERNAL MYANA_INIT
EXTERNAL MYANA_BEGINRUN
EXTERNAL MYANA_EVENT
EXTERNAL MYANA_ENDRUN
EXTERNAL MYANA_TALK
EXTERNAL MYANA_BOOK
EXTERNAL MYANA_FINISH
The other important thing you do in DASH_DECL is to declare the size of CERN arrays and initialize the packages. So you will typically see lines like as follows, which you can change as needed:
INTEGER PAW
COMMON/PAWC/PAW(800000)
...
CALL HLIMIT(760000)
CALL KUINIT(40000)
You may see other modules declared in the DASH_DECL you start with. Leave them in if you want them in your program, delete the lines if you do not. You may see other DASH_DEC_xxx routines; see the section on utility routines below for an explanation of more advanced use.