SUBROUTINE   EXMSYS(NARGS,SYSFIL,OUTFIL,
     1               NCOLSD,SDUM,WDUM,FDUM,ERRCD,ERRMSG)
C
C       FUNCTION:
CF
CF
C       USAGE:
CU
CU
C       INPUTS:
CI
CI
C       OUTPUTS:
CO
CO
C       ALGORITHM:
CA
CA
C       MACHINE DEPENDENCIES:
CM
CM
C       HISTORY:
CH
CH      written by:             
CH      date:                   
CH      current version:        
CH      modifications:          
CH				added dpcom: 7/16/88 jdb
CH
C       ROUTINES CALLED:
CC
CC
C       COMMON MEMORY USED:
CM
CM      DPCOM -- see dpcommon.f and dpcom.f
CM
C----------------------------------------------------------------------
C       written for:    The CASCADE Project
C                       Oak Ridge National Laboratory
C                       U.S. Department of Energy
C                       contract number DE-AC05-840R21400
C                       subcontract number 37B-07685C S13
C                       organization:   The University of Tennessee
C----------------------------------------------------------------------
C       THIS SOFTWARE IS IN THE PUBLIC DOMAIN
C       NO RESTRICTIONS ON ITS USE ARE IMPLIED
C----------------------------------------------------------------------
C
C
        INCLUDE         'Parameter.f'
C
        DOUBLE PRECISION        A(SIZE,SIZE)
        DOUBLE PRECISION        B(SIZE,SIZE)
        DOUBLE PRECISION        C(SIZE,SIZE)
        DOUBLE PRECISION        D(SIZE,SIZE)
        INTEGER                 NARGS
        INTEGER                 NSTATS
        INTEGER                 NINPS
        INTEGER                 NOUTS
        INTEGER                 NCOLS
        INTEGER                 NCOLSD
        INTEGER                 S
        INTEGER                 SDUM
        INTEGER                 W
        INTEGER                 WDUM
        INTEGER                 F
        INTEGER                 FDUM
        CHARACTER*(*)           SYSFIL
        CHARACTER*(*)           OUTFIL
        CHARACTER*(*)           ERRMSG
C
	INCLUDE			'dpcom.f'
C
C       Determine if any optional arguments were supplied, etc.
C
        IF (NARGS.GE.3) THEN
           NCOLS=NCOLSD
        ELSE
           NCOLS=4
        END IF
        IF (NARGS.GE.4) THEN
           S = SDUM
           IF (NARGS.GE.5) THEN
              W = WDUM
              F = FDUM
           ELSE
              W = 0
              F = 0
           END IF
        ELSE
           S = 0
           W = 0
           F = 0
        END IF
C
C       Read in the system from the system container file.
C
        CALL INSYS(SYSFIL,NINPS,NOUTS,NSTATS,
     2     SIZE,SIZE,SIZE,A,B,C,D,ERRCD)
          CLOSE (UNIT=UNIT1)
C
          IF (ERRCD .NE. 0) THEN
            ERRMSG = 'EXMSYS: Fatal error from INSYS '//
     1               'accessing '//SYSFIL
            RETURN
          END IF
C
        OPEN (UNIT=UNIT1,FILE=OUTFIL,ERR=9999)
C
C Write the number of states, inputs, and outputs of the system,
C  as well as the A matrix.
C
        WRITE (UNIT1,1001)  NSTATS, NINPS, NOUTS
1001    FORMAT (1X,'NUMBER OF STATES:  ',I3,/,1X,
     1          'NUMBER OF INPUTS:  ',I3,/,1X,'NUMBER OF OUTPUTS:  ',
     2          I3,//,1X,' A MATRIX: ',//)
        CALL FMOUT(UNIT1,NCOLS,S,W,F,SIZE,NSTATS,NSTATS,A)
C
C Write the B matrix.
C
        WRITE (UNIT1,1002)
1002    FORMAT (//' B MATRIX: '//)
        CALL FMOUT(UNIT1,NCOLS,S,W,F,SIZE,NSTATS,NINPS,B)
C
C Write the C matrix.
C
        WRITE (UNIT1,1003)
1003    FORMAT (//' C MATRIX: '//)
        CALL FMOUT(UNIT1,NCOLS,S,W,F,SIZE,NOUTS,NSTATS,C)
C
C Write the D matrix.
C
        WRITE (UNIT1,1004)
1004    FORMAT (//' D MATRIX: '//)
        CALL FMOUT(UNIT1,NCOLS,S,W,F,SIZE,NOUTS,NINPS,D)
C
C End processing.
C
        CLOSE(UNIT=UNIT1)
        RETURN
9999    ERRCD = 8
        ERRMSG = ' EXMSYS: Fatal Error; Bad output file '//OUTFIL
        RETURN
        END