*DECK LFGRDHR USETEXT LFGIOD,LFGHDRC,LFGIB PROC LFGRDHR(PICBF,WC,BEGADDR,SUCCESS); BEGIN *IF DEF,IMS # ** LFGRDHR - READ HEADER RECORD. * * M. E. VATCHER 81/02/23 * * LFGRDHR READS A MODULE HEADER RECORD FROM THE CURRENT INPUT * FILE AT THE CURRENT POSITION. * * PROC LFGRDHR(PICBF,WC,BEGADDR,SUCCESS) * * ENTRY NONE. * * EXIT PICBF SET IF THIS IS A PICB * WC 16 BIT WORD COUNT OF DATA IN FOLLOWING RECORD * BEGADDR BEGINNING ADDRESS * SUCCESS SUCCESSFUL COMPLETION INDICATOR * * METHOD * * READ A RECORD * SET WORD COUNT * SET OR CLEAR PICB INDICATOR * IF ITS NOT A PICB * THEN * SET BEGINNING ADDRESS * # *ENDIF # **** PROC LFGRDHR - XREF LIST BEGIN. # XREF BEGIN ITEM IFET; # FWA OF INPUT FILE FET # PROC LFGRDER; # SEND READ ERROR MESSAGE # PROC LFGRDSR; # READ SEQUENTIAL RECORD # END # **** # ITEM PICBF B; # TRUE IF ITS A PICB # ITEM WC U; # 16 BIT WORD COUNT # ITEM BEGADDR U; # BEGINNING ADDRESS # ITEM STATIS; ITEM SUCCESS B; P
= LOC(IBUF[0]); SUCCESS = TRUE; LFGRDSR(LOC(IFET),STATIS); # READ A HEADER RECORD # IF STATIS NQ RDEOR THEN BEGIN LFGRDER(STATIS); # SEND APPROPRIATE MESSAGE TO OUTPUT # SUCCESS = FALSE; RETURN; # ***** EXIT ***** # END WC = WCOUNT; # SET WORD COUNT # IF NAME1[0] EQ O"120" AND # ASCII "P" # NAME2A[0] EQ 4 AND NAME2B EQ O"11" AND # ASCII "I" # NAME3[0] EQ O"103" AND # ASCII "C" # NAME4[0] EQ O"102" #ASCII "B" # THEN # ITS A PICB # PICBF = TRUE; ELSE PICBF = FALSE; IF NOT PICBF THEN # SET BEGINNING ADDRESS # BEGIN B<37,5>BEGADDR = PAGER[0]; B<42,7>BEGADDR = PAGEN[0]; B<49,11>BEGADDR = PAGED[0]; END END TERM