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