This web server is actually running on a MultiValue host. Here are some statistics about the current host:
Host Type: {RAW(SYSTEM.TYPE)}
{PL_AMTOCRLF(HW)}
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
Supervisor Process: {SUP.PORT}
Thread Processes: {PROC.PORTS}
{PL_AMTOCRLF(WHAT)}
Look at this page's source.{PL_AMTOCRLF(PLSTAT)}
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