 
	SUBROUTINE  GETSYSINFO (TOTMEM, FREECNT, MFYCNT, VMSMEM, AWSTIME, 
	1	    BORROWLIM, GROWLIM, PFRATH, PFRATL, WSDEC, WSINC,
	2	    IOTA, AWSMIN, QUAN, DMASIZE, THRESH, SWPPGCNT,
	3	    PROCCNT, IJOBCNT, BJOBCNT)		! , NJOBCNT)
 
!       Written September 29, 1987  by  William A. Flatt
!       This routine returns the Free memory and Modified memory page counts
!       as would be obtained with a SHOW MEMORY  DCL command.
!
!       To resolve the external references it should be linked:
!
!       LINK module_name(s),GETMEMINFO+SYS$SYSTEM:SYS.STB
!
!       Thanks to Remote Software Support and Tom of VMS B team.

!	MODIFIED by William A. Flatt October 7, 1987 
!	Renamed to GETSYSINFO.
!	Modified to report on dynamic system parameters.
 
!	SUBROUTINEs

!	MOVESTR (IARG1, IARG2, IARG3)

!	WHERE	 IARG1 	is I*4 passed by reference
!		 IARG2  is a source byte string passed by reference
!		 IARG3  is a destination byte string passed by reference

!		MOVESTR copies the first IARG1 bytes of IARG2 into IARG3.
!		This move takes place without regard to the datatypes.

!	FUNCTIONs

!	INTEGER4DATA = IPEEK4 (INTEGER4INFO)
!		
!		IPEEK4 returns the data at the address of INTEGER4INFO as an
!			longword (INTEGER*4) integer.  Here it its stored into
!		        INTEGER4DATA

!	INTEGER2DATA = IPEEK2 (INTEGER2INFO)
!		
!		IPEEK2 returns the data at the address of INTEGER2INFO as an
!			word (INTEGER*2) integer.  Here it its stored into
!		        INTEGER4DATA

!	INTEGER1DATA = IPEEK1 (INTEGER1INFO)
!		
!		IPEEK1 returns the data at the address of INTEGER1INFO as an
!			byte (BYTE) integer.  Here it its stored into
!		        INTEGER1DATA
!			

	IMPLICIT    NONE

	INTEGER*4   IPEEK4
	INTEGER*2   IPEEK2
	BYTE	    IPEEK1


	INTEGER*4   TOTMEM
        INTEGER*4   FREECNT
        INTEGER*4   MFYCNT
	INTEGER*4   VMSMEM
	INTEGER*4   AWSTIME
	INTEGER*4   BORROWLIM
	INTEGER*4   GROWLIM
	INTEGER*4   PFRATH
	INTEGER*4   PFRATL
	INTEGER*4   WSDEC
	INTEGER*4   WSINC
	INTEGER*4   PROCCNT

	INTEGER*4   IOTA
	INTEGER*4   AWSMIN
	INTEGER*4   QUAN

	INTEGER*4   DMASIZE

	INTEGER*4   THRESH

	INTEGER*4   SWPPGCNT

	INTEGER*4   IJOBCNT
	INTEGER*4   BJOBCNT
!	INTEGER*4   NJOBCNT

        INTEGER*4   SCH$GL_FREECNT
        EXTERNAL    SCH$GL_FREECNT
        INTEGER*4   SCH$GL_MFYCNT
        EXTERNAL    SCH$GL_MFYCNT
        INTEGER*4   SCH$GL_AWSTIME
        EXTERNAL    SCH$GL_AWSTIME
        INTEGER*4   SCH$GL_BORROWLIM
        EXTERNAL    SCH$GL_BORROWLIM
        INTEGER*4   SCH$GL_GROWLIM
        EXTERNAL    SCH$GL_GROWLIM
        INTEGER*4   SCH$GL_PFRATH
        EXTERNAL    SCH$GL_PFRATH
        INTEGER*4   SCH$GL_PFRATL
        EXTERNAL    SCH$GL_PFRATL
        INTEGER*4   SCH$GL_WSDEC
        EXTERNAL    SCH$GL_WSDEC
        INTEGER*4   SCH$GL_WSINC
        EXTERNAL    SCH$GL_WSINC

        INTEGER*4   SCH$GW_IOTA
        EXTERNAL    SCH$GW_IOTA
        INTEGER*4   SCH$GW_AWSMIN
        EXTERNAL    SCH$GW_AWSMIN
        INTEGER*4   SCH$GW_QUAN
        EXTERNAL    SCH$GW_QUAN
        INTEGER*4   SCH$GW_PROCCNT
        EXTERNAL    SCH$GW_PROCCNT

        INTEGER*4   TTY$GW_DMASIZE
        EXTERNAL    TTY$GW_DMASIZE

        INTEGER*4   SWP$GL_SWPPGCNT
        EXTERNAL    SWP$GL_SWPPGCNT

	INTEGER*4   MMG$GL_MAXMEM 
	EXTERNAL    MMG$GL_MAXMEM 

      
	INTEGER*4   MPW$GL_THRESH
        EXTERNAL    MPW$GL_THRESH

	INTEGER*4   PFN$GL_PHYPGCNT
	EXTERNAL    PFN$GL_PHYPGCNT


        INTEGER*4   SYS$GW_IJOBCNT
        EXTERNAL    SYS$GW_IJOBCNT
 
        INTEGER*4   SYS$GW_BJOBCNT
        EXTERNAL    SYS$GW_BJOBCNT

!	INTEGER*4   SYS$GW_NJOBCNT
!	EXTERNAL    SYS$GW_NJOBCNT

 
	TOTMEM		= IPEEK4 ( %REF (MMG$GL_MAXMEM)) + 1
	FREECNT		= IPEEK4 ( %REF (SCH$GL_FREECNT))
	MFYCNT		= IPEEK4 ( %REF (SCH$GL_MFYCNT))
	VMSMEM		= TOTMEM - IPEEK4 ( %REF (PFN$GL_PHYPGCNT))
        AWSTIME		= IPEEK4 ( %REF (SCH$GL_AWSTIME))
        BORROWLIM	= IPEEK4 ( %REF (SCH$GL_BORROWLIM))
        GROWLIM		= IPEEK4 ( %REF (SCH$GL_GROWLIM))
        PFRATH		= IPEEK4 ( %REF (SCH$GL_PFRATH))
	PFRATL		= IPEEK4 ( %REF (SCH$GL_PFRATL))
	WSDEC		= IPEEK4 ( %REF (SCH$GL_WSDEC))
	WSINC		= IPEEK4 ( %REF (SCH$GL_WSINC))

!	IOTA = 0
	IOTA		= IPEEK2 ( %REF (SCH$GW_IOTA))
	AWSMIN		= IPEEK4 ( %REF (SCH$GW_AWSMIN))

!	QUAN = -1
	QUAN		= IPEEK2 ( %REF (SCH$GW_QUAN))
	QUAN = -QUAN

	DMASIZE = 0
	DMASIZE		= IPEEK2 ( %REF (TTY$GW_DMASIZE))

	THRESH		= IPEEK4 ( %REF (MPW$GL_THRESH))

	SWPPGCNT	= IPEEK4 ( %REF (SWP$GL_SWPPGCNT))
  
!	PROCCNT = 0
	PROCCNT		= IPEEK2 ( %REF (SCH$GW_PROCCNT))

!	IJOBCNT = 0
	IJOBCNT		= IPEEK2 ( %REF (SYS$GW_IJOBCNT))

!	BJOBCNT = 0
	BJOBCNT		= IPEEK2 ( %REF (SYS$GW_BJOBCNT))

!	NJOBCNT = 0
!	NJOBCNT		= IPEEK2 ( %REF (SYS$GW_NJOBCNT))
!					Always zero - expected network job count

        RETURN
        END
