*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<HEADER> = 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