cdc:nos2.source:nam5871:bldacb
Table of Contents
BLDACB
Table Of Contents
- [00012] PRGM BLDACB
- [00092] PROC MGROW
- [00093] PROC MGETS
- [00094] PROC XTRACE
- [00095] PROC BLDKWL
- [00096] PROC DAYTIME
Source Code
- BLDACB.txt
- *DECK BLDACB
- USETEXT NIPDEF
- USETEXT ACB
- USETEXT ACNT
- USETEXT APPSTAT
- USETEXT AT
- USETEXT PARAMS
- USETEXT PT
- USETEXT STATTAB
- USETEXT KDIS
- USETEXT KSTTAB
- PRGM BLDACB; # BULID ACB ACNT FOR APPLICATION. #
- STARTIMS;
- #
- *1DC BLDACB
- *
- * 1. PROC NAME AUTHOR DATE
- * BLDACB N. NICHOLAS 80/08/14
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * PROCESS ACB AND ACNT BUFFERS.
- * FOR APPLICATION NETTING ON.
- *
- * 3. METHOD USED.
- *
- * CHECK FOR DUPLICATE JOB-ID. FIND FREE AT ENTRY.
- * IF NO FREE ENTRIES AVAILABLE IN AT THEN REQUEST
- * A LARGER BUFFER. UPDATE HIGHEST APPLICATION NUMBER
- * IN USE IN THE (AT) HEADER. REQUEST A BUFFER FOR
- * A APPLICATION CONTROL BLOCK (ACB). FILL IN ACB
- * INFORMATION. LINK ACB TO AT ENTRY. UPDATE
- * STATUS DISPLAY BUFFER INFORMATION IF NECESSARY.
- * REQUEST A BUFFER FOR A APPLICATION CONNECTION
- * TABLE (ACNT). FILL IN ACNT HEADER INFORMATION.
- * LINK ACB TO ACNT. RETURN WITH APPLICATION
- * NUMBER IN PARAMS1.
- *
- * 4. ENTRY PARAMETER.
- *
- * PARAMS1 = MINACN MININUM A C N VALUE
- * PARAMS2 = MAXACN MAXIMUM A C N VALUE
- * PARAMS3 = ANAME APPLICATION NAME
- * PARAMS4 = ONADDR DATA AVAILABE WORD
- * JOBID = JOBID APPLICATION JOBID WORD
- *
- * 5. EXIT PARAMETERS.
- *
- * PARAMS1 = AN
- *
- * 6. COMDECKS CALLED AND SYMPL TEXT USED.
- *
- * ACB ACNT AT APPSTAT NIPDEF
- * PARAMS PT KDIS
- * STATTAB KSTTAB OSSIZE
- *
- * 7. ROUTINES AND OVERLAYS CALLED.
- *
- * MGROW COMPASS- WILL GET NEW (AT) BUFFER,TRANSFER
- * INFORMATION FROM OLD ( AT ) TO NEW
- * ( AT ) AND RELEASE OLD ( AT ) BUFFER.
- *
- * MGETS COMPASS- WILL GET NEW BUFFERS FOR THE
- * APPLICATION CONTROL BLOCK ( AT ) AND
- * APPLICATION CONNECTION TABLE ( ACNT ).
- *
- * KPUT - UPDATE K-DISPLAY STATUS BUFFER
- * KADD - ADD NEW LINE TO STATUS DISPLAY SCREEN
- * DAYTIME - TIME IN DISPLAY
- * XTRACE - TRACE PROCEDURE CALL
- *
- * 8. DAYFILE MESSAGES AND OTHER INPORTANT INFORMATION.
- *
- * NO DAYFILE MESSAGES.
- * THIS PROGRAM IS A SECONDARY OVERLAY LOADED
- * BY SUBROUTINE OVLCALL. WHEN EXECUTION IS
- * COMPLETED A JUMP IS MADE TO LOCATION RJMAIN
- * TO RETURN TO THE CALLING PROGRAM.
- *
- * W A R N I N G-THIS PROGRAM CANNOT EXCEED THE SECONDARY
- *CALL OSSIZE
- *
- * THIS OVERLAY IS CALLED BY - H P N O N -
- *
- #
- STOPIMS;
- #
- E X T E R N A L V A R I A B L E S
- #
- XREF
- BEGIN
- PROC MGROW; # REQUEST A EXTENDED BUFFER #
- PROC MGETS; # REQUEST A NEW BUFFER AREA #
- PROC XTRACE; # RECORD PROCEDURE CELLS #
- PROC BLDKWL; # FORMAT KWL TO ADD APP ENTRY TO ST #
- PROC DAYTIME ;
- LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
- END
- #
- I N T E R N A L V A R I A B L E S
- #
- ITEM UNUSEDAN; # APPLICATION NUMBER ( AN ) #
- ITEM TEMPAPI C(1) ;
- ITEM AKNDX ;
- ITEM KAPP ;
- ITEM DUPJOBID B; # FLAG DUPLICATE JOB-ID #
- ITEM INDX; # INDEX USED FOR SCANING (AT) #
- ITEM FLAG; # DUMMY FLAG #
- ITEM DTIME ;
- ITEM ACNTADDR; # POINTER TO (ACNT) BUFFER #
- #***************** E X E C U T A B L E C O D E *****************#
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("BDACB") ;
- CONTROL FI;
- #
- SET POINTER TO APPLICATION TABLE ( AT ).
- SCAN ( AT ) FOR OPEN ENTRY IN THE ( AT ).
- #
- UNUSEDAN = 0; # A-NUM USED IN - FOR LOOP #
- DUPJOBID = FALSE; # INITIALIZE DUPLIC JOB-ID FLAG #
- #
- C H E C K ( A T ) T A B L E F O R
- D U P L I C A T I O N J O B I D
- A N D F O R F R E E ( A T ) E N T R Y
- #
- FOR INDX =1 STEP 1 WHILE
- INDX LS ATBS[0] AND NOT DUPJOBID
- DO
- BEGIN
- IF ATACBA[INDX] NQ 0 # CHECK IF APPL/ACB EXIST #
- THEN
- BEGIN # ACB DOES EXIST #
- P<ACB> = ATACBA[INDX]; # SET BASED ARRAY ADDRESS #
- IF INDX LQ ATHAN[0]
- THEN
- IF ACBJNWD[0] EQ JOBID # COMPARE JOBIDS FOR MATCH #
- THEN
- DUPJOBID = TRUE; # SET DUPLICATE JOB-ID FLAG #
- END
- ELSE
- IF UNUSEDAN EQ 0
- THEN
- UNUSEDAN = INDX; # SAVE FREE ( AT ) ENTRY #
- END
- BEGIN
- IF NOT DUPJOBID
- THEN
- BEGIN
- #
- FOR STATMENT LOOP COMPLETED
- CHECK IF APPLICATION TABLE HAS
- AN OPEN ENTRY.
- #
- IF UNUSEDAN EQ 0 AND ATNFE[0] EQ 0
- THEN # NO OPEN ENTRY,( AT ) IS FULL #
- BEGIN # EXTENT ( AT ) BUFFER AREA #
- UNUSEDAN = ATBS[0]; # APPLICATION NUMBER #
- #
- REQUEST EXTENDED BUFFER FOR THE ( AT ).
- #
- MGROW(P<AT>,ATBS[0] + ATESIZE,FLAG);
- PTAT[0] = P<AT>; # SET (AT) ADDR IN PT TABLE #
- ATHAN[0] = UNUSEDAN; # HIGHEST APPLICATION ENTRY #
- ATNFE[0] = ATESIZE; # UPDATE NO. OF FREE ENTRIES #
- END
- IF ATHAN[0] LS UNUSEDAN
- THEN
- BEGIN
- ATHAN[0] = UNUSEDAN;
- END
- #
- REQUEST A BUFFER FOR A APPLICATION CONTROL BLOCK
- ( A C B ).
- #
- CONTROL IFEQ STAT,1;
- ST$ACB = ST$ACB + 1 ;
- CONTROL FI ;
- MGETS(ACBSIZE,ACBADDR,TRUE);
- P<ACB> = ACBADDR; # SET POINTER TO ACB BUFFER #
- ATACBA[UNUSEDAN] = ACBADDR; # PUT ACB ADDRESS IN (AT) TABLE #
- ATNFE[0] = ATNFE[0] - 1; # DECREMENT NO. OF FREE ENTRIES #
- ACBID[0] = ACBIDVALUE; # IDENTIFY ACB BUFFER BLOCK #
- ACBAN[0] = UNUSEDAN; # ACB LOCATION IN (AT) TABLE #
- ACBJNWD[0] = JOBID; # JOB IDENTIFACTION WORD #
- ACBANAME[0] = C<0,7>PARAMS3; # JOB NAME #
- ACBIAUCPA[0] = PARAMS4;
- ACBIASCPA[0] = LOC(ACBAAVAL[0]);
- ACBIAFP[0] = 1;
- ACBIAFC[0] = SFWRITE;
- DAYTIME(DTIME) ;
- ACBNETONT[0] = DTIME ;
- IF KDST[0]
- THEN # STATUS DISPLAY ON, ADD APPLICATION ENTRY TO DISPLAY #
- BLDKWL(KST"APP",UNUSEDAN,0,KADDIDVALUE);
- #
- REQUEST A BUFFER FOR A APPLICATION CONNECTION
- TABLE (ACNT) FOR THE APPLICATION PROGRAM, LINK
- THE (ACNT) TO THE APPLICATIONS(ACB) BLOCK, AND
- FILL IN THE (ACNT) CELLS FOR IDENTIFICATION AND
- INFORMATION WHICH IS NEEDED.
- #
- MGETS(ACNTSIZE,ACNTADDR,TRUE);
- P<ACNT> = ACNTADDR; # ACNT BASED ARRAY ADDRESS #
- ACNTID[0] = ACNTIDVALUE; # (ACNT)IDENTIFICATION NUMBER #
- ACNTMINACN[0] = PARAMS1; # MININUM ( A C N ) VALUE #
- ACNTMAXCN[0] = PARAMS2-PARAMS1+1; # MAX NO. OF CONNECTIONS #
- ACNTAN[0] = UNUSEDAN; # APPLICATION NUMBER #
- ACNTFFCN[0] = PARAMS1; # INITIALIZE FIRST FREE CN #
- ACNTNFE[0] = ACNTSIZE - ACNTHSIZE; # NUMBER OF FREE ENTRIES #
- #
- LINK APPLICATION CONNECTION TABLE (ACNT)
- TO THE APPLICATION CONTROL BLOCK ( ACB ).
- RETURN TO CALLING PRAGRAM WITH (APPLICATION
- NUMBER ( AN ) IN PARAMS1.
- #
- ACBACNT[0] = P<ACNT>; # ADDRESS TO ACNT TABLE #
- PARAMS1 = UNUSEDAN; # APPLICATION NUMBER ( AN ). #
- END
- ELSE
- PARAMS1 = 0; # SET APPLICATION AN TO 0 #
- END
- GOTO RJMAIN;
- END
- TERM
cdc/nos2.source/nam5871/bldacb.txt ยท Last modified: 2023/08/05 17:21 by Site Administrator