*COMDECK PBCHKREG 
_$J+? 
_ 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*              * *   P B C H K R E G   * *                            * 
*                                                                     * 
*              CHECK CURRENT REGULATION LEVEL                         * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
_$R-,G-,I+?  _NON-RECURSIVE, NON-INTERRUPTABLE? 
_ 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
** OVERVIEW    THIS ROUTINE IS CALLED EVERY 100 MILLISECONDS TO CHECK * 
*              THE CURRENT REGULATION LEVEL.  CHANGES IN REGULATION   * 
*              LEVEL ARE REPORTED TO THE SERVICE MODULE. IN ADDITION, * 
*              LINE INITIALIZER IS NOTIFIED IF THE REGULATION LEVEL   * 
*              DROPS TO ONE, SO NO MORE INCOMING CALLS ARE ACCEPTED   * 
*              THE ROUTINE IS ALSO CALLED BY PMWOLP WHEN MUX BUFFER   * 
*              THRESHOLD IS DETECTED.                                 * 
*                                                                     * 
** INPUT       100 MLS TIMER OR MUX BUFFER THRESHOLD DETECTED         * 
*                                                                     * 
** OUTPUT      WORKLISTS TO SVM AND LINE INITIALIZER                  * 
*                                                                     * 
** EXTERNAL SUBROUTINES USED                                          * 
*              PBDF                 DUMP FILE 1 REGISTER              * 
*              PBLSPUT              MAKE A WORKLIST ENTRY             * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
PROCEDURE PBCHKREG; 
  
VAR 
      I       : INTEGER;                    _BUFFER COUNT              ?
      REGLV   : INTEGER;                    _REGULATION LEVEL          ?
      LASTCNT : INTEGER;                    _LAST BUFFER COUNT         ?
      LOCWLCB : BWWORKLIST;                 _LOCAL WORKLIST AREA       ?
  
BEGIN 
PBDF ($010C, I);                            _GET NR OF FREE BUFFERS    ?
IF I > BFTHRESH[B0TH3LV]
THEN                                        _REGULATION LEVEL 3        ?
  REGLV := 3
ELSE
  IF I > BFTHRESH[B0TH2LV]
  THEN                                      _REGULATION LEVEL 2        ?
    REGLV := 2
  ELSE
    REGLV := 1;                             _REGULATION LEVEL 1        ?
  
IF REGLV > NPUREG                           _REGULATION IMPROVED       ?
THEN
  IF I < (LASTCNT + NCLLCB)                 _BUT NOT ENOUGH YET        ?
  THEN
    GOTO 20;                                _DONT CHANGE REGULATION LVL?
LASTCNT := I;                               _SAVE OLD BUFFER COUNT     ?
  
IF NPUREG " REGLV                           _DIFFERENT REGULATION LEVEL?
THEN
  BEGIN 
  IF REGLV = 1                              _DROPPED TO LEVEL 1        ?
  THEN
    BEGIN                                   _DONT ANSWER THE PHONE     ?
    LOCWLCB.CMSMLEY.CMWKCODE := A0SMNH;     _NO HOSTS AVAILABLE        ?
    PBLSPUT (LOCWLCB, BYWLCB [B0LIWL]);     _TELL LINE INITIALIZER     ?
    END;
  
  LOCWLCB.CMSMLEY.CMWKCODE := D0LINK;       _NPU REGULATION WORKLIST   ?
  LOCWLCB.CMSMLEY.CMLTYP   := NPU;
  LOCWLCB.CMSMLEY.CMREG    := REGLV;        _NEW REGULATION LEVEL      ?
  PBLSPUT (LOCWLCB, BYWLCB [B0SMWL]);       _SEND WORKLIST TO SVM      ?
  
  NPUREG := REGLV;                          _SAVE NEW REGULATION LEVEL ?
  IF NPUREG < PFLREGL 
  THEN                                      _MAINTAIN LOWEST REG LEVEL ?
    PFLREGL := NPUREG;                      _FOR PERFORMANCE MEASURING ?
  END;
  
20: 
END; _PROCEDURE PBCHKREG? 
