FTN PROGRAM BBLD2(5,90),92069-16001 REV.1912 790202 C C C C C************************************************************* C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * C PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * C OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * C************************************************************* C C C SOURCE: 92069-18003 C RELOC: 92069-16001 C C C************************************************************ C C C C THIS SEGMENT PROCESSES THE RUN STRING , OPENING OR LOCKING THE C INPUT AND LIST FILES OR DEVICES C SETS THE OPTIONS FLAGS C AND OPENS THE DATA BASE C LOGICAL IFTTY INTEGER IBUF(10) INTEGER I248 REAL SIZE(2) INTEGER BCLOS(3),BINF(3) INTEGER ILEVL(10),ISTAT(10) INTEGER ADD,ERR,NOLST INTEGER HD(17),HDZ INTEGER ILLST(13) INTEGER ILLU(6) INTEGER ILINP(14) INTEGER SEGM(9) INTEGER LOCKED(13) C$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ AUGUST 10,1978 $$$ INTEGER ERROR,P,PLEN,CARD,LOG,COL INTEGER ELECT,ITEM,LENTH,TYPE INTEGER IDCB,LDCB,LIST,INPUT,PRTLM,CHECK,LST INTEGER IBASE INTEGER SETERR INTEGER TRUE,FALSE,SEMI,COMMA INTEGER L,CHAR INTEGER SETNO INTEGER QTFLAG C COMMON ERROR,P(40),PLEN,CARD(256),LOG,COL COMMON ELECT(129),ITEM(129),LENTH(129),TYPE(129) COMMON IDCB(144),LDCB(144),LIST,INPUT,PRTLM,CHECK,LST COMMON IBASE(10) COMMON SETERR COMMON L,CHAR COMMON SETNO COMMON QTFLAG COMMON/CONST/TRUE,FALSE,SEMI,COMMA C$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ OCTOBER 16,1978 $$ EXTERNAL IFTTY C DATA ADD/2HAD/ DATA ERR/2HER/ DATA NOLST/2HNO/ DATA I248/248/ C DATA SEGM/2HSE,2HGM,2HEN,2HT ,2HNO,2HT ,2HFO,2HUN,2HD / DATA LOCKED/2H D,2HBB,2HLD,2H W,2HAI,2HTI,2HNG,2H O,2HN , & 2HLI,2HST,2H L,2HU / C IMAGE/1000 DATA BASE BUILD UTILITY DATA HD/2HIM,2HAG,2HE/,2H10,2H00,2H D,2HAT,2HA ,2HBA,2HSE, &2H B,2HUI,2HLD,2H U,2HTI,2HLI,2HTY/ DATA ILLST/2H L,2HIS,2HT ,2HFI,2HLE,2H E,2HRR,2HOR,2H I, &2HS ,2HXX,2HXX,2HXX/ DATA ILLU/2H I,2HLL,2HEG,2HAL,2H L,2HU / DATA ILINP/2H I,2HNP,2HUT,2H F,2HIL,2HE ,2HER,2HRO,2HR , &2HIS,2H ,2HXX,2HXX,2HXX/ DATA HDZ/17/ C DATA BCLOS/2HBC,2HLO,2H2 / DATA BINF/2HBI,2HNF,2H2 / DATA I203,I218/203,218/ DATA IBLNK/2H / C C C C DEFAULT PARAMETERS C PRTLM = 72 CHECK = TRUE QTFLAG = FALSE LST = TRUE ERROR = 0 C C PROCESS INPUT NAME C IPTR = 1 CALL NAMR(IBUF,P,PLEN,IPTR) C C SET INPUT LU TO ZERO AND ERROR CODE TO ZERO IN CASE C INPUT NAMR IS AN LU C INPUT = -1 IERR = 0 C C IS INPUT NAMR A FILE? C IF (IAND(IBUF(4),000003B) .NE. 3) GOTO 10 C C YES, OPEN THE FILE C CALL OPEN(IDCB,IERR,IBUF,0,IBUF(5),IBUF(6) ) GO TO 20 C C NO, THEN INPUT IS AN LU C 10 CONTINUE INPUT = IBUF(1) C C DEFAULT LU IF NECESSARY C IF(INPUT .EQ. 0) INPUT = 1 IF(INPUT .GT. 0) GOTO 12 IERR = -200 GOTO 20 C C LOCK INPUT LU IF NOT AN INTERACTIVE DEVICE C 12 CONTINUE IF(IFTTY(INPUT)) GOTO 15 CALL LURQ(1,INPUT,1) C C SET CONTROL WORD TO ECHO COMMANDS FROM A KEYBOARD C 15 CONTINUE INPUT = INPUT + 400B C C GET THE LIST PARAMETER C 20 CONTINUE CALL NAMR(IBUF,P,PLEN,IPTR) C C IS LIST A FILE? C LIST = -1 IERR2 = 0 IF (IAND(IBUF(4),000003B) .NE. 3) GOTO 30 C C YES, OPEN THE FILE C CALL OPEN (LDCB,IERR2,IBUF,0,IBUF(5),IBUF(6) ) C C IF NOT FOUND THEN CREATE THE LIST FILE C IF(IERR2 .NE. -6) GOTO 25 SIZE = DBLEI(10) CALL ECREA(LDCB,IERR2,IBUF,SIZE,4,IBUF(5),IBUF(6) ) C C IF ERROR THEN ABORT C 25 CONTINUE IF (IERR2 .GE. 0) GOTO 40 C C OUTPUT ERROR MESSAGE WITH FMP ERROR CODE C LIST = 1 CALL CITA(IERR2,ILLST(11)) CALL OUTLN(ILLST,13) C C CLOSE INPUT FILE C 27 CONTINUE CALL ECLOS(IDCB) STOP C C NO, THEN LIST IS A LU C 30 CONTINUE LIST = IBUF(1) C C DEFAULT LIST TO LU 6 IF NECESSARY C IF (IBUF(4) .EQ. 0) LIST = 6 IF(LIST .GE. 0) GOTO 34 LIST = 1 CALL OUTLN(ILLU,6) GOTO 27 C C LOCK THE LU C SKIP TO TOP OF PAGE C 34 CONTINUE IF(IFTTY(LIST) ) GOTO 35 C C LOCK THE LU C CALL LURQ(100001B,LIST,1) CALL ABREG(IA,IB) IF(IA .EQ. 0) GOTO 35 CALL EXEC(2,1,LOCKED,13) 341 CALL EXEC(12,0,2,0,-10) CALL LURQ(100001B,LIST,1) CALL ABREG(IA,IB) IF(IA .NE. 0) GOTO 341 C C OUTPUT TOP OF PAGE C 35 CALL EXEC(3,1100B+LIST,-1) C C OUTPUT A HEADING C 40 CONTINUE CALL OUTLN(IBLNK,1) CALL OUTLN(IBLNK,1) CALL OUTLN(HD,HDZ) CALL OUTLN(IBLNK,1) CALL OUTLN(IBLNK,1) CALL OUTLN(IBLNK,1) C C CHECK FOR INPUT OPEN ERROR C C IF (IERR .GE. 0) GOTO 50 C C IS THIS AN ILLEGAL LU? C IF(IERR .NE. -200) GOTO 45 CALL OUTLN(ILLU,6) CALL HALT C C INPUT FILE ERROR C 45 CONTINUE CALL CITA(IERR,ILINP(12)) CALL OUTLN(ILINP,14) CALL HALT C C OPEN OK, C C C C C C C C C C PROCESS THE OPTIONS C C C C C C C 50 CONTINUE CALL NAMR(IBUF,P,PLEN,IPTR) IFLAG = IAND(IBUF(4),3B) IF(IFLAG .EQ. 0) GOTO 150 IF (IFLAG .NE. 1) GOTO 100 C C PROCESS THE PRINT LIMIT C PRTLM = IBUF IF(PRTLM .GT. 0 .AND. PRTLM .LT. 513) GOTO 50 CALL ERROT(I218) PRTLM = 72 GOTO 50 C C PROCES THE ADD OPTION C 100 CONTINUE IF(IFLAG .NE. 3) GOTO 140 IF(IBUF .NE. ADD) GOTO 120 CHECK = FALSE GOTO 50 C C PROCESS ERRHLT OPTION C 120 CONTINUE IF(IBUF .NE. ERR) GOTO 130 QTFLAG = TRUE GOTO 50 C C PROCESS NOLST OPTION C 130 CONTINUE IF(IBUF .NE. NOLST) GOTO 140 LST = FALSE GOTO 50 C C ERROR - ILLEGAL OPTION C 140 CONTINUE CALL ERROT(I218) CALL OUTLN(IBUF,3) GOTO 50 C C C C C C C C START PROCESSING THE FILE C C C C C C C GET FIRST RECORD C 150 CONTINUE CALL CRDIM(IERR) IF(IERR .NE. 0) CALL HALT C C GET DATA BASE NAME C IBASE(1) = IBLNK CALL KEYWD(IBASE(2) ) C C DEFAULT LEVEL WORD C DO 160 I = 1,3 160 ILEVL(I) = IBLNK C C WAS A LEVEL WORD GIVEN C IF(CHAR .EQ. SEMI) GOTO 170 IF (CHAR .NE. COMMA) GOTO 170 CALL KEYWD(ILEVL) C C OPEN THE DATA BASE C 170 CONTINUE CALL DBOPN(IBASE,ILEVL,3,ISTAT) IF(ISTAT .EQ. 0) GOTO 180 CALL ERROT(ISTAT) CALL HALT C C C C C IF NEXT RECORD .NE. $SET: THEN ERROR C 180 CONTINUE IVAL = 0 CALL SETD(IVAL) IF(IVAL .EQ. -1) GOTO 185 IF(IVAL .EQ. 0) GOTO 190 CALL ERROT(I203) C C LOAD AND EXECUTE BCLOS C 185 CONTINUE CALL SEGLD(BCLOS,IERR) CALL OUTLN(SEGM,9) CALL OUTLN(BCLOS,3) CALL HALT C C C C C LOAD AND EXECUTE BINF C 190 CONTINUE CALL SEGLD(BINF,IERR) CALL OUTLN(SEGM,9) CALL OUTLN(BINF,3) ERROR = ERROR + 1 GOTO 185 END END$ END END$