{INCLUDE _LOGOS.HTM}

PicLan-IP Server Status

You should have experienced about a 2 second pause before reaching this page.  This pause was caused by running the small performance benchmark program outlined below.  This is not an indication that the server is slow, but just that the application is designed this way.



This web server is actually running on a MultiValue host. Here are some statistics about the current host:

Host Type: {RAW(SYSTEM.TYPE)}

Hardware Configuration:

{PL_AMTOCRLF(HW)}

CPU Performance:

T0 = INT(TIME())
LOOP WHILE TIME() = T0 DO REPEAT
T0 = INT(TIME())
FOR X = 1000 TO 10000000 STEP 1000 WHILE INT(TIME()) = T0
   FOR Y = 1 TO 1000
   NEXT Y
NEXT X
X = {OCONV(X,'MD0,')}/second

Process Configuration:

Supervisor Process: {SUP.PORT}
Thread Processes: {PROC.PORTS}

System WHAT display:

{PL_AMTOCRLF(WHAT)}

PicLan-IP TCP Connection List

{PL_AMTOCRLF(PLSTAT)}
Look at this page's source.
{INCLUDE _GEN_FTR.HTM}
PicLan-IP/BASIC { }
*
      SYSTEM.TYPE = 'Unknown'
      HW = 'Unknown'
      X = 0
#IF APPRO
      SYSTEM.TYPE = 'Native Pick - AP/Pro 6.1'
      HW = 'Intel Pentium 75'
      HW<-1> = '32 Meg RAM'
      HW<-1> = '197 Meg partition on Disk 0'
      HW<-1> = '161 Meg partition on Disk 1'
#END
#IF SEQ32
      SYSTEM.TYPE = 'Native Pick - Sequoia PRO'
      HW = 'Intel 486-33'
      HW<-1> = '8 Meg RAM'
      HW<-1> = '200 Meg partition on Disk 0'
#END
#IF P6432
      SYSTEM.TYPE = 'Native Pick - Pick/64+'
      HW = 'Intel 486-66'
      HW<-1> = '16 Meg RAM'
      HW<-1> = '50 Meg partition on Disk 0'
#END
#IF ADDS
      SYSTEM.TYPE = 'Native Pick - Mentor PRO 4.1'
      HW = 'Cyrix 6x68 PR150+ (120MHz core)'
      HW<-1> = '32 Meg RAM'
      HW<-1> = '500 Meg partition on Disk 0'
#END
#IF MVBASE
      SYSTEM.TYPE = 'Pick on Windows NT - mv*Base'
      HW = 'Cyrix PR200+ (150MHz core)'
      HW<-1> = 'Windows NT 4.0 Server'
      HW<-1> = '64 Meg RAM'
      HW<-1> = '500 Meg Pick volume'
#END
#IF D3NT
      SYSTEM.TYPE = 'D<sup>3</sup>/NT'
      HW = 'Intel Pentium 120'
      HW<-1> = 'Windows NT 4.0 Server'
      HW<-1> = '48 Meg RAM'
      HW<-1> = '100 Meg D3 VME'
#END
#IF D3LINUX
      SYSTEM.TYPE = 'D<sup>3</sup>/Linux'
      HW = 'Dual Intel 400'
      HW<-1> = 'Linux RedHat 5.2 w/ 2.2.11 Kernel'
      HW<-1> = '512 Meg RAM'
      HW<-1> = '500 Meg Pick Partition'
#END
#IF UVNT
      SYSTEM.TYPE = 'Universe NT'
      HW = 'Cyrix PR200+'
      HW<-1> = '64 Meg RAM'
#END
#IF UDNT
      SYSTEM.TYPE = 'Unidata NT'
      HW = 'Cyrix PR200+'
      HW<-1> = '64 Meg RAM'
#END*
* This logic is used to determine the port numbers that are in use
* for PicLan-IP supervisor and thread processes.  The code for
* AP phantom processes is included here and is a bit obscure if you
* do not understand the way the PicLan-IP web server process structure
* is managed.  In any case, this logic is not very germain to
* normal application code.
*
      P.NOS = PLIP$PROC.PORTS<1>
      NO.PROC.PORTS = DCOUNT(P.NOS,VM)

      FOR I = 1 TO NO.PROC.PORTS
         IF P.NOS<1,I> = '*' THEN
            IF PL$V.PORT.NO = (I-1) THEN
               P.NOS<1,I> = PORT.NO : '(ph)'
            END ELSE
               LOCK.ID = 'V.PORT.NO*' : (I-1)
               READU DUMMY FROM PL$LOCK.FD , LOCK.ID LOCKED
#IF APPRO|ADDS|SEQ32|MVBASE
                  P.NOS<1,I> = SYSTEM(0)
#END
#IF D3NT
                  EXECUTE 'PLD3.GETLOCK WWW.CTRL,LOCK ' : LOCK.ID CAPTURING X
                  P.NOS<1,I> = X
#END
#IF UV
                  P.NOS<1,I> = STATUS()
                  IF P.NOS<1,I> >= 32768 THEN P.NOS<1,I> = 65536 - P.NOS<1,I>
#END
#IF UD
                  CALL PLU.UD.LOCKPORT('LOCK','V.PORT.NO*':(I-1),X,'')
                  P.NOS<1,I> = X
#END
                  P.NOS<1,I> = P.NOS<1,I> : '(ph)'
               END ELSE NULL
               IF P.NOS<1,I> = '*' THEN
                  RELEASE PL$LOCK.FD , LOCK.ID
               END
            END
         END
      NEXT I
      BEGIN CASE
         CASE NO.PROC.PORTS < 1
            PROC.PORTS = 'Undefined'
         CASE NO.PROC.PORTS = 1
            PROC.PORTS = P.NOS
         CASE YES
            FOR I = 1 TO NO.PROC.PORTS
               BEGIN CASE
                  CASE I = 1
                     PROC.PORTS = P.NOS<1,I>
                  CASE I = NO.PROC.PORTS
                     IF I > 2 THEN
                        PROC.PORTS = PROC.PORTS : ','
                     END
                     PROC.PORTS = PROC.PORTS : ' and ' : P.NOS<1,I>
                  CASE YES
                     PROC.PORTS = PROC.PORTS : ', ' : P.NOS<1,I>
               END CASE
            NEXT I
      END CASE
*
      SUP.PORT = PLIP$SUP.PORT
      IF SUP.PORT = '*' THEN
         READU DUMMY FROM PL$LOCK.FD , 'SUPERVISOR.PROCESS' LOCKED
#IF APPRO|ADDS|SEQ32|MVBASE
            SUP.PORT = SYSTEM(0)
#END
#IF D3NT
            EXECUTE 'PLD3.GETLOCK WWW.CTRL,LOCK SUPERVISOR.PROCESS' CAPTURING X
            SUP.PORT = X
#END
#IF UV
            SUP.PORT = STATUS()
            IF SUP.PORT >= 32768 THEN SUP.PORT = 65536 - SUP.PORT
#END
#IF UD
            CALL PLU.UD.LOCKPORT('LOCK','SUPERVISOR.PROCESS',X,'')
            SUP.PORT = X
#END
         END ELSE NULL
      END
*
#IFN UV
      EXECUTE 'TERM ,0'
#END
#IFN UV|UD
      EXECUTE 'WHAT' CAPTURING WHAT
#END
#IF UV|UD
      WHAT = 'The WHAT verb is not supported on Universe or Unidata'
#END
      LOOP WHILE WHAT[1,1] = CHAR(0) DO
         WHAT = WHAT[2,999999]
      REPEAT
      IF WHAT[1,LEN(@(-1))] = @(-1) THEN
         WHAT = WHAT[1+LEN(@(-1)),999999]
      END
*
      EXECUTE 'PL-STAT' CAPTURING PLSTAT
      IF PLSTAT[1,LEN(@(-1))] = @(-1) THEN
         PLSTAT = PLSTAT[LEN(@(-1))+1,999999]
      END
*
      T0 = INT(TIME())
      LOOP WHILE INT(TIME()) = T0 DO REPEAT
      T0 = INT(TIME())
      FOR X = 1000 TO 100000000 STEP 1000 WHILE INT(TIME()) = T0
         FOR Y = 1 TO 1000
         NEXT Y
      NEXT X