*COMDECK PBACCOUNT
_$J+
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        P B A C C O U N T I N G   -   FORMAT U/L ACCOUNTING CMD      * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
_$G-,R-,I-    NON RECURSIVE, INTERRUPTABLE ?
_ 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
** OVERVIEW - THIS PROCEDURE FORMATS THE UPLINE ACCOUNTING COMMAND    * 
*             FOR BATCH CONNECTIONS TO BE SENT AFTER EACH END OF      * 
*             INFORMATION OR AFTER AN I/O TERMINATION                 * 
*                                                                     * 
** INPUT    - B1TCB  POINTER TO THE TCB, K6SFC  THE SECONDARY         * 
*             FUNCTION CODE (PARAMETER), ACCOUNTING COUNTERS FM TCB   * 
*                                                                     * 
** OUTPUT   - UPLINE ACCOUNTING CMD BUILT AND SENT                    * 
*                                                                     * 
** EXTERNAL SUBROUTINES USED -                                        * 
*             PBGET1BF    - GET A BUFFER                              * 
*             PBUBPM      - PASS ACCOUNTING CMD FURTHER UPLINE        * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
PROCEDURE PBACCOUNTING (K6SFC : INTEGER); 
  
VAR 
  K6BUFP : B0BUFPTR;                        _ WORKING VARIABLE         ?
  K6ACL8 : INTEGER;                         _ WORKING VARIABLE         ?
  
BEGIN 
K6BUFP := PBGET1BF (BEDBSIZE);              _GET BUFFER FOR U/L CMD    ?
WITH K6BUFP', B1TCB'.BSTCB DO               _INDEX TO BUFFER AND TCB   ?
  BEGIN 
  BIINT [PFC/2+1] := D8AD * $100 + K6SFC;   _INSERT PFC AND SFC        ?
  K6ACL8      := BSACTL8;                   _ USE TRUE VALUE           ?
  IF BSDEVTYPE = N1LP                       _ IF THE DEVICE IS A LINE  ?
  THEN                                      _ PRINTER                  ?
    BEGIN                                   _ THEN                     ?
    K6ACL8      := ((K6ACL8 + BSPGLEN - 1)  _ ROUND THE LINES PRINTED  ?
                   / BSPGLEN) * BSPGLEN     _ UP TO PAGE MULTIPLE      ?
    END;
  BIINT[P3/2+1] := K6ACL8 / 256 + BSACTH16; _ INSERT UPPER 16 BITS     ?
  BFDATAC[P5]   := CHR(K6ACL8);             _ INSERT LOWER 8 BITS      ?
  BIINT [LFCD]    := P5 * $100 + PFC;       _INSERT LCD/FCD            ?
  BSACTH16        := 0; 
  BSACTL8         := 0;                     _CLEAR ACCOUNTING FIELDS   ?
  END;
PBUBPM (K6BUFP, HTCMD);                     _PASS CMD FURTHER UPLINE   ?
END; _PROCEDURE PBACCOUNTING? 
_$J+
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        P B P E O I   -   POST EOI PROCESSING FOR BATCH OUTPUT       * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
_$G-,R-,I-    NON RECURSIVE, INTERRUPTABLE ?
_ 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
** OVERVIEW - THIS PROCEDURE PERFORMS POST OUTPUT PROCESSING AFTER    * 
*             THE EOI BLOCK HAS BEEN DELIVERED TO A BATCH DEVICE.     * 
*             IT WILL FORCE ALL REMAINING BACKS TO BE SENT UPLINE     * 
*             BY PURGING THE (EMPTY) DOWNLINE QUEUE PRIOR TO SENDING  * 
*             THE EOI ACCOUNTING CMD UPLINE.                          * 
*                                                                     * 
** INPUT    - K6TCBP  POINTER TO TCB, K6SFC SECONDARY FUNCTION CODE   * 
*             (PARAMETERS)                                            * 
*                                                                     * 
** OUTPUT   - REMAINING U/L BACK(S) SENT, ACCOUNTING SENT             * 
*                                                                     * 
** EXTERNAL SUBROUTINES USED -                                        * 
*             PBRDPGE     - SAVE CURRENT PAGE NUMBER                  * 
*             PBPSWITCH   - SWITCH TO NEW (BIPS) PAGE NUMBER          * 
*             PGPURGEQUE  - PURGE DOWNLINE TCB QUEUE                  * 
*             PBACCOUNTNG - FORMAT/SENT ACCOUNTING DATA U/L           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
PROCEDURE PBPEOI (K6TCBP : B0BUFPTR; K6SFC : INTEGER);
  
VAR 
  K6BUFP  : B0BUFPTR;                       _ ACCOUNTING BUFFER        ?
  K6OPAGE : INTEGER;                        _ SAVE FOR USER PAGE       ?
  
BEGIN 
B1TCB        := K6TCBP;                     _SET GLOBAL TCB POINTER    ?
PBRDPGE      (K6OPAGE);                     _SAVE CALLERS PAGE         ?
PBPSWITCH    (K0PGBIP);                     _SWITCH TO BIPS PAGE       ?
PGPURGEQUE   (K4DWNLN);                     _FORCE U/L BACKS TO BE SENT?
PBACCOUNTING (K6SFC);                       _FORMAT/SHIP ACCOUNT. DATA ?
PBPSWITCH    (K6OPAGE);                     _RESTORE CALLERS PAGE      ?
END; _PROCEDURE PBPEOI? 
