*DECK BRLBLK USETEXT NIPDEF USETEXT APPSTAT USETEXT NWLNTRY USETEXT AT USETEXT ACB USETEXT STATTAB PROC BRLBLK((BUFADR1),TXTLN); STARTIMS; # *1DC BRLBLK * * 1. PROC NAME AUTHOR DATE * BRLBLK E. GEE 77/09/14 * * 2. FUNCTIONAL DESCRIPTION. * READ TEXT FROM APP FL TO NIP FL * * 3. METHOD USED. * IF TEXT IS GREATER THAN 64 WORDS LONG, * SET UP EXTENDED READ FUNCTION TO READ TEXT INTO NIP FL. * ELSE (TEXT IS LESS THAN OR EQUAL TO 64 WORDS LONG), * SET UP NORMAL SYSTEM CONTROL POINT READ FUNCTION. * ISSUE SCP CALL. * IF SYSTEM CONTROL POINT CALL RETURN CODE IS NONZERO, * IF RETURN CODE IS UCP IS SWAPPED OUT, * ISSUE SCP SWAPIN OF APPLICATION. * ELSE (RETURN CODE OTHER THAN SCP SWAPPED OUT), * SET ABORT APPLICATION OR APPLICATION FAILED FLAGS. * ELSE (NO ERROR RETURN CODE FROM OPERATING SYSTEM), * IF NOT ALL OF THE DATA HAS BEEN READ INTO NIP FL, * CLEAR COMPLETION BIT AND GO BACK AND REISSUE SCP CALL. * * 4. ENTRY PARAMETERS. * BUFADR1 ADDR OF BUF TO HOLD TEXT * ACBADDR ACB ADDRESS * TXTLN LENGTH OF TEXT TO READ * WLADDR NETWORK WORKLIST ENTRY ADDRESS * * 5. EXIT PARAMETERS. * ABTAPPF ABORT FLG SET IF NIP GOT SCP RC = RCUCPAOOR * DONE SET FALSE IF TEXT NOT READ IN * FAILADR FAIL FLG SET IF NIP GOT SCP RC = RCUCPGONE * * 6. COMDECKS CALLED AND SYMPL TEXTS USED. * ACB AT APPSTAT * NIPDEF NWLNTRY * STATTAB STATISTICS TABLE * * 7. ROUTINES AND OVERLAYS CALLED. * OSCCALL ISSUE SCP CALL * OSCHAPP SCHEDULE APPLICATION * OTIME GET SYSTEM TIME * XTRACE RECORD PROCEDURE CALLS * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION. * NONE * # STOPIMS; # INPUT PARAMETERS # ITEM BUFADR1; # FWA TO STORE ABH AND TEXT # ITEM TXTLN I; # NO OF WORDS TO READ FROM UCP # # OUTPUT PARAMETERS NONE # # EXTERNAL VARIABLES # XREF BEGIN PROC OSCCALL; # SYSTEM CONTROL POINT CALL # PROC OSCHAPP; # SCHEDULE AN APPLICATION # PROC OTIME; # GET SYSTEM TIME # PROC XTRACE; # TRACE CALL # END # LOCAL VARIABLES # ARRAY FLR P(3); # ARRAY FOR ISSUING SCP CALL # BEGIN ITEM FLRRC U(00,00,06); # RETURN CODE FROM SCP CALL # ITEM FLRFP U(00,06,12); # NUMBER OF WORDS TO READ # ITEM FLRUCPA U(00,18,18); # UCP ADR FOR SF.READ SCP FUNC # ITEM FLRSCPA U(00,36,18); # SCP ADR FOR SF.READ SCP FUNC # ITEM FLRFC U(00,54,06); # SCP FUNCTION CODE # ITEM FLRCB U(00,59,01); # SCP FUNCTION COMPLETION BIT # ITEM FLRWD0 U(00,00,60) = [0]; # WORD 0 OF SCP FUNCTION BUFFER # ITEM FLRJSNWD U(01,00,60); # UCP JSN / EJT ORDINAL WORD # ITEM FLRXUCPA U(02,12,24); # UCP ADR FOR SF.XREAD SCP FUNC # ITEM FLRXSCPA U(02,36,24); # SCP ADR FOR SF.XREAD SCP FUNC # ITEM FLRWD2 U(02,00,60) = [0]; # WORD 2 OF SCP FUNCTION BUFFER # END CONTROL IFEQ STAT,1; ARRAY STIME P(1); # RTIME BUFFER FOR STARTING TIME# BEGIN ITEM SMILS U(0,24,36); # STARTING TIME IN MILLESECONDS # END ARRAY ETIME P(1); # RTIME BUFFER FOR ENDING TIME # BEGIN ITEM EMILS U(0,24,36); # ENDING TIME IN MILLESECONDS # END ITEM STTEMP; # TEMPORARY STATISTICS VARIABLE # CONTROL FI; #**********************************************************************# BEGIN CONTROL IFEQ DEBUG,1; XTRACE("BRLBL") ; CONTROL FI; CONTROL IFEQ STAT,1; OTIME(STIME); # GET SYSTEM TIME AT BEGINNING # CONTROL FI; DONE = FALSE; # SET FUNCTION INCOMPLETE # P = ACBADDR; P = WLADDR; FLRWD0[0] = 0; # INITIALIZE RETURN CODE FIELD # FLRFP[0] = TXTLN; # WORD COUNT TO BE TRANSFERRED # FLRJSNWD[0] = ACBJNWD[0]; IF TXTLN GR 64 THEN # EXTENDED READ SCP FUNC NEEDED # BEGIN FLRFC[0] = SFXRED; # SF.XREAD FUNCTION CODE # FLRXUCPA[0] = NWLTA[0]; # UCP ADDR TO READ FROM # FLRXSCPA[0] = BUFADR1 + ABHSIZE; # SCP ADDR TO READ TO # END ELSE # READ SCP FUNCTION SUFFICIENT # BEGIN FLRFC[0] = SFREAD; # SF.READ FUNCTION CODE # FLRUCPA[0] = NWLTA[0]; # UCP ADDR TO READ FROM # FLRSCPA[0] = BUFADR1 + ABHSIZE; # SCP ADDR TO READ TO # END RDBLK: OSCCALL(FLR); # ISSUE SCP REQUEST # IF FLRRC[0] NQ 0 THEN BEGIN IF FLRRC[0] EQ RCSWAPPEDOUT THEN BEGIN # USER JOB SWAPPED OUT # ATASBS[ACBAN[0]] = TRUE; # SET APP SWAPPED OUT BIT IN AT # OSCHAPP(ACBADDR); # SCHEDULE APPLICATION # END ELSE BEGIN IF FLRRC[0] EQ RCUCPAOOR THEN ABTAPPF = XFLERR; # UCPA IS OUT OF RANGE # ELSE FAILADR = ACBADDR; # OTHER SCP ERROR RETURN CODE # END END ELSE BEGIN # SCP REQUEST HAS COMPLETED # IF FLRFP[0] NQ 0 AND # IF DATA TRANSFER NOT COMPLETE # TXTLN GR 64 # EXTENDED READ FUNCTION ISSUED # THEN BEGIN FLRCB[0] = 0; # CLEAR COMPLETE BIT # GOTO RDBLK; # REISSUE SF.READ REQUEST # END DONE = TRUE; # SET FUNCTION COMPLETE FLAG # END CONTROL IFEQ STAT,1; OTIME(ETIME); # GET SYSTEM TIME AT END OF PROC# ST$NBR = ST$NBR + 1; # INCR NO OF TIMES PROC CALLED # STTEMP = EMILS[0] - SMILS[0]; # TIME SPENT IN THIS ROUTINE # ST$TBR = ST$TBR + STTEMP; # TOTAL TIME SPENT IN ROUTINE # IF ST$LBR LS STTEMP THEN # FOUND LARGER TIME INTERVAL # BEGIN ST$LBR = STTEMP; # NEW LARGEST TIME INTERVAL # END CONTROL FI; RETURN; END TERM