PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 1 TIZ.FTN;1 /CK/F77/TR:ALL/WR C Title: TIZ - Task Image Zapper C Author: T. R. Wyant C Date: 7-Oct-82 C Modified: C+ Remarks: C TIZ is a task to simplify the modification of task C image files. It offers TKB-like keyword modifica- C tion of those task attributes that are represented C as values in label blocks 0-2. The keywords impli- C mented at the moment are: C /ASG=dev:lun - Change LUN device assignmnt C /[NO]CP - Enable/disable checkpoint C /[NO]DU - Dump label block after run C /HE - Help message C /[NO]IP - Warning when map I/O pg C /LIBR=nam:ac - Change library/common acces C /[NO]PM - Generate postmortem dump C /PAR=name - Change partition name C /PRI=n - Change priority C /[NO]RO - Don't update task image C /[NO]SL - Install with slave attrib C /TASK=name - Change task name C /XHR=NO - Don't install w/ extrnl hdr C =MAYBE - Allow external header C =YES - Install w/ external header C Those switches/keywords which can be negated are C negated by prefacing either "NO" or "-". C C TIZ can be invoked either as a command line or C in conversational mode. C- C======================================================================= C C Type Declarations. C 0001 INTEGER*2 ABORT ! .TRUE. to abort a command. 0002 INTEGER*2 ASSERT ! .TRUE. if switch asserted. 0003 LOGICAL*1 BYTUIC(2) ! Task default UIC (Temporary). 0004 INTEGER*2 BUFLEN ! Command length. 0005 CHARACTER*1 CCBYTE ! Carriage control. 0006 CHARACTER*80 CMDLIN ! MCR command line. 0007 INTEGER*2 CNDABO ! .TRUE. if "Something's fishy" 0008 CHARACTER*80 DEFSWI ! Default switches. 0009 INTEGER*2 DOTS ! = RAD50 '...' 0010 INTEGER*2 DUMP ! .TRUE. to dump lbl blk at end 0011 INTEGER*2 DFLT ! .TRUE. if default proc. done. 0012 INTEGER*2 IBEG ! Begin of decode string. 0013 INTEGER*2 IEND ! End of decode string. 0014 INTEGER*2 IPRIL ! Index of task priority. 0015 INTEGER*4 JNAME ! RAD-50 name buffer. 0016 CHARACTER*4 LBFLG(16) ! Meanings of task flags. 0017 INTEGER*2 LBLBLK(512,3) ! Task label blocks. 0018 INTEGER*2 LIBLST ! Number of last /LIBR wildcard 0019 INTEGER*2 LIBNAM(2) ! Resident library name. 0020 INTEGER*2 LNAME(3) ! Library name (ASCII). PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 2 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0021 INTEGER*2 LUNTBL(2,256) ! Luns for task 0022 INTEGER*2 NOLUNS ! Number of Luns in use. 0023 INTEGER*2 NSWIT ! Number of switches this file. 0024 CHARACTER*40 OUTFIL ! Output file name. 0025 CHARACTER*40 OUTDFL ! Default output file name. 0026 INTEGER*2 PROMPT ! .TRUE. for conversational. 0027 INTEGER*2 RDONLY ! .TRUE. to not update task file 0028 CHARACTER*10 SWABBR ! Switch abbreviation. 0029 CHARACTER*80 SWIERR ! Switch error text. 0030 CHARACTER*80 SWILST ! Switches. 0031 CHARACTER*40 SWITCH ! Individual switch value. 0032 INTEGER*2 TNAME(3) ! Task name (ASCII). 0033 CHARACTER*40 TSKFIL ! Name of task file. 0034 CHARACTER*40 TSKDFL ! Defaults for task file name. 0035 INTEGER*2 TSKFLG ! Task flags word. C C======================================================================= C C Equivalence statements. C 0036 EQUIVALENCE (LBLBLK(8,1),BYTUIC(1)) 0037 EQUIVALENCE (LBLBLK(13,1),TSKFLG) 0038 EQUIVALENCE (LBLBLK(1,2),LUNTBL(1,1)) C C======================================================================= C C Data statements. C 0039 DATA DEFSWI /'/RO/DU'/ 0040 DATA DOTS /3R.../ 0041 DATA LBFLG /' PIC','-HDR',' ACP',' PMD',' SLV','-SND',' ', 1 ' PRV',' CMP','-CHK',' RES','-IOP',' SUP',' XHR', 2 '-XHR',' '/ C C======================================================================= C C Format Statements. C 0042 90200 FORMAT ('SY:[',O3,',',O3,'].TSK') 0043 92000 FORMAT (X,/,'$Give task image file name: ') 0044 92020 FORMAT (Q,A) 0045 93000 FORMAT ('$ Give keyword: ') 0046 93220 FORMAT (A2,O6) 0047 93240 FORMAT (O6) 0048 93260 FORMAT (I10) 0049 93520 FORMAT ('0Task File Name: ',A,/, 1 ' Task Name: ',3A2,/, 2 ' Partition Name: ',3A2,/, 3 ' Task Flags: ',A,/ 4 ' Priority: ',I3,/, 5 ' Creation date: ',I2.2,'/',I2.2,'/',I2.2) 0050 93530 FORMAT (2A,T32,' Created: ',2(I2.2,'/'),I2.2) 0051 93540 FORMAT (X,A2,O,':') 0052 93550 FORMAT (A,' LUN ',I3,':',A) 0053 94000 FORMAT (' Error - Task image not modified due to above error.') PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 3 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0054 94010 FORMAT (' Warning - A task whose name is of the form ...xxx ', 1 'can not be installed slaved.') 0055 94020 FORMAT (' Info - /RO switch asserted. Task image not modified.') 0056 99000 FORMAT (' Error - Cannot open task file ',A) 0057 99100 FORMAT (' Error - Keyword /'A,X,A) C C======================================================================= C C Mainline Code C C----------------------------------------------------------------------- C C Initialize and determine mode of operation. C 0058 PROMPT = .TRUE. ! Assume conversational mode. 0059 TSKFIL = ' ' ! Preset the file name 0060 SWILST = ' ' ! and the switch list. 0061 CALL GETTSK(LBLBLK(1,1)) ! Get the task params. 0062 I = BYTUIC(2) ! Get group number. 0063 I = I .AND. '377'O ! Clear high byte. 0064 J = BYTUIC(1) .AND. '377'O ! Get member number. 0065 J = J .AND. '377'O ! Clear high byte. 0066 WRITE (TSKDFL,90200) I, J ! Encode UIC into default name. 0067 CALL INPROC(40,TSKDFL,I) ! Get rid of blanks. 0068 CALL FILSTR(TSKDFL) ! Parse it into components. 0069 OUTDFL = 'SY:TIZ.PRT' ! Set up output file name. 0070 CALL FILSTR(OUTDFL) ! Parse it. 0071 CALL GETMCR(CMDLIN,BUFLEN) ! Get the MCR command line. 0072 IBEG = INDEX(CMDLIN,' ') + 1 ! Find end of task name. 0073 PROMPT = (BUFLEN .LE. 0 .OR. ! Determine mode of operation. 1 IBEG .LE. 1) C C----------------------------------------------------------------------- C C Get task file. C C....................................................................... C C If interactive, get task file name and switches if any. C 0074 2000 ABORT = .FALSE. ! Assume not aborted. 0075 IF (PROMPT) THEN ! If interactive, 0076 WRITE (5,92000) ! Ask for file name. 0077 READ (5,92020,END=9990) BUFLEN, ! Read the file 1 CMDLIN ! name. 0078 IF (BUFLEN .LE. 0) GO TO 9990 ! If none, exit. 0079 IBEG = 1 ! No command name. 0080 END IF C C....................................................................... C C Set up default switches. C 0081 NSWIT = 0 ! Init. switch count. 0082 LIBLST = 0 ! Init. libr wildcard count. PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 4 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0083 DUMP = .FALSE. ! Init. the dump switch. 0084 RDONLY = .FALSE. ! Init. the readonly switch. 0085 DFLT = .FALSE. ! Init. the default flag. 0086 SWILST = ' ' ! Preset switch list 0087 TSKFIL = ' ' ! and file name. C C....................................................................... C C Separate task file name from switches. C 0088 BUFLEN = BUFLEN + 1 ! Adjust line length. 0089 CMDLIN(BUFLEN:) = '/' ! Slash to help parse. 0090 J = BUFLEN - IBEG + 1 ! Find line length. 0091 CALL INPROC(J,CMDLIN(IBEG: ! Uppercase the line, and get 1 BUFLEN),I) ! rid of spaces and tabs. 0092 BUFLEN = I + IBEG - 1 ! Reset the line length. 0093 J = INDEX(CMDLIN,'/') ! Find the first switch. 0094 IF ((J - 1) .GE. IBEG) ! If a file name was passed, 1 TSKFIL = CMDLIN(IBEG:J-1) ! save it. 0095 IF (BUFLEN .GE. (J + 1)) ! If there are any switches, 1 SWILST = CMDLIN(J+1:BUFLEN) ! save them. 0096 J = INDEX(TSKFIL,'=') ! Is there an output file? 0097 IF (J .GT. 0) THEN ! If so, 0098 IF (J .GT. 1) THEN ! If not null, 0099 OUTFIL = TSKFIL(:J-1) ! Save it 0100 ELSE ! else 0101 OUTFIL = ' ' ! Save spaces. 0102 END IF 0103 TSKFIL = TSKFIL(J+1:) ! Take it off the task file 0104 DUMP = .TRUE. ! Force a dump. 0105 ELSE ! If no output file, 0106 OUTFIL = 'TI:' ! Make it TI:. 0107 END IF C C...................................................................... C C Supply default file spec elements. C 0108 CALL FILSTR(OUTFIL) ! Parse the output file. 0109 CALL FILDEF(OUTFIL,OUTDFL) ! Fill in the defaults. 0110 IF (SWILST(1:2) .EQ. 'HE' 1 .AND. TSKFIL .EQ. ' ') 2 THEN ! If want help at this point, 0111 CALL HLPSUB(OUTFIL,DEFSWI) ! Give it, 0112 GO TO 9900 ! and exit. 0113 END IF 0114 CALL FILSTR(TSKFIL) ! Break name into components. 0115 CALL FILDEF(TSKFIL,TSKDFL) ! Plug in the defaults. C C....................................................................... C C Open task file and read in label blocks. C 0116 OPEN (UNIT=1,NAME=TSKFIL,TYPE='OLD', ! Open the task 1 ACCESS='DIRECT',ERR=9000) ! image file. PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 5 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0117 DO 2760 I=1,3 ! Read label blocks. 0118 READ(1'I) (LBLBLK(J,I),J=1,256) 0119 2760 CONTINUE 0120 IPRIL = '346'O/2 + 1 ! Assume no super mapping. 0121 DO 2780 I=27,124,14 ! Step thru the window blocks. 0122 IF ((LBLBLK(I,1) .AND. ! If we are mapped to a 1 '10'O) .NE. 0) ! supervisor library, 2 IPRIL = '706'O/2 + 1 ! revise assumption. 0123 2780 CONTINUE ! All done. 0124 NOLUNS = LBLBLK(IPRIL+6,1) ! Get number of luns in use. 0125 IF (NOLUNS .GT. 0 .AND. ! If it has any, 1 LUNTBL(1,NOLUNS) .EQ. 'OV' ! If last one is overlay 2 .AND. LUNTBL(2,NOLUNS) .EQ. 0) ! load LUN, 3 NOLUNS = NOLUNS - 1 ! Don't modify it. C C----------------------------------------------------------------------- C C Get and process switches and keywords. C C....................................................................... C C Ask for switches if interactive. C 0126 3000 IF (PROMPT .AND. SWILST .EQ. ' ') THEN ! If interactive, 0127 WRITE (5,93000) ! Ask for switches. 0128 READ (5,92020,END=9990) BUFLEN, 1 SWILST ! Get them. 0129 IF (BUFLEN .LE. 0) GO TO 4000 ! If none, process. 0130 BUFLEN = BUFLEN + 1 ! Adjust length. 0131 SWILST(BUFLEN:) = '/' ! Slash for parse. 0132 CALL INPROC(BUFLEN,SWILST(: ! Uppercase & kill 1 BUFLEN),I) ! spaces&tabs. 0133 BUFLEN = I ! Reset line len. 0134 END IF C C...................................................................... C C Pick apart the list of switches. C 0135 3200 IF (SWILST .EQ. ' ') GO TO 3900 ! If no switches left, finish. 0136 I = INDEX(SWILST,'/') ! Look for end of this switch. 0137 IF (I .GT. 1) ! If not null, 1 SWITCH = SWILST(:I-1) ! Peel it off. 0138 SWITCH(I:I) = ':' ! Trailing colon to help parse. 0139 SWILST = SWILST(I+1:) ! Drop it from list. 0140 IF (I .LE. 1) GO TO 3200 ! If null, go for next. 0141 NSWIT = NSWIT + 1 ! Processed another switch. C C....................................................................... C C Determine if switch is negated. C 0142 ASSERT = .TRUE. ! Assume switch is asserted. 0143 SWABBR = SWITCH(1:1) ! Check first char. 0144 IF (SWABBR .NE. '-') ! If not minus, PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 6 TIZ.FTN;1 /CK/F77/TR:ALL/WR 1 SWABBR = SWITCH(1:2) ! Check first two. 0145 IF (SWABBR .EQ. '-' .OR. ! If a negation, 1 SWABBR .EQ. 'NO') THEN ! 0146 ASSERT = .FALSE. ! Show not asserted. 0147 J = INDEX(SWABBR,' ') ! Find length of negate string. 0148 SWITCH = SWITCH(J:) ! Take it out. 0149 END IF ! C C....................................................................... C C Set up to process keywords. C 0150 SWIERR = 'may not be negated.\' ! Preset error message. 0151 SWABBR = ' ' ! Blank out switch abbr. 0152 IBEG = INDEX(SWITCH,'=') ! Find equals sign if any. 0153 IEND = 0 ! Assume not found. 0154 IF (IBEG .GT. 0) THEN ! If found, 0155 SWABBR = SWITCH(:IBEG-1) ! Set up abbrev. 0156 IBEG = IBEG + 1 ! Pass up equals sign. 0157 IEND = INDEX(SWITCH(IBEG:),':') ! Find colon. 0158 IF (IEND .GT. 0) ! If colon found, 1 IEND = IEND + IBEG - 2 ! Point to it. 0159 END IF C C....................................................................... C C /ASG=dev:lun - Change LUN's device assignment C 0160 IF (SWABBR .EQ. 'ASG') THEN ! If its the ASG keyword: 0161 IF (.NOT. ASSERT) GO TO 9100! It may not be negated. 0162 SWIERR = 'has missing or bad device spec.\' 0163 IF (IBEG .LE. 0) GO TO 9100 ! If missing spec, error. 0164 I = IEND - IBEG ! Length of dev. spec. 0165 IF (I .LE. 0) GO TO 9100 ! If not long enough, error. 0166 READ (SWITCH(IBEG:IEND),93220, ! Decode the device 1 ERR=9100) IDEV, IUNT ! spec. 0167 IF (I .EQ. 1) IUNT = 0 ! If no unit, make zero. 0168 IF (IUNT .LT. 0 .OR. IUNT ! If a bad unit number, 1 .GT. 255) ! then 2 GO TO 9100 ! error out. 0169 I = IDEV/'400'O ! Check device name for alfa 0170 IF (I .LT. '101'O .OR. I ! If not, error 1 .GT. '132'O) GO TO 9100 ! out. 0171 I = IDEV - I*'400'O ! Check second char. 0172 IF (I .LT. '101'O .OR. I ! If not alfa, error 1 .GT. '132'O) GO TO 9100 ! out. 0173 SWIERR = 'has invalid LUN.\' 0174 3240 IBEG = IEND + 2 ! Skip the colon. 0175 IEND = INDEX(SWITCH(IBEG:),':') ! Find the next one. 0176 IF (IEND .LE. 0) GO TO 3200 ! If none, get next switch. 0177 IEND = IEND + IBEG - 2 ! Adjust string pos. 0178 READ (SWITCH(IBEG:IEND),93240, ! Get the LUN number. 1 ERR=9100) ILUN ! 0179 IF (ILUN .LE. 0 .OR. ILUN ! If a bad LUN number, 1 .GT. NOLUNS) ! then PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 7 TIZ.FTN;1 /CK/F77/TR:ALL/WR 2 GO TO 9100 ! error out. 0180 LUNTBL(1,ILUN) = IDEV ! Store the device name. 0181 LUNTBL(2,ILUN) = IUNT ! Store the unit number. 0182 GO TO 3240 ! Try for more. 0183 END IF C C....................................................................... C C /PRI=n - Change priority C 0184 IF (SWABBR .EQ. 'PRI') THEN ! If we have a priority change, 0185 IF (.NOT. ASSERT) GO TO 9100! It may not be negated. 0186 SWIERR = 'has invalid priority.\' 0187 IF (IBEG .LE. 0) GO TO 9100 ! If missing spec, error. 0188 READ (SWITCH(IBEG:IEND),93260, ! Read the 1 ERR=9100) IPRI ! priority. 0189 IF (IPRI .LT. 0 .OR. IPRI ! If out of range, 1 .GT. 250) GO TO 9100 ! error out. 0190 LBLBLK(IPRIL,1) = IPRI ! Set the new priority. 0191 GO TO 3200 ! Go get another switch. 0192 END IF C C....................................................................... C C /PAR=name - Change partition name. C /TASK=name - Change task name C 0193 IX = 0 ! Assume not /TASK or /PAR 0194 IF (SWABBR .EQ. 'TASK') THEN ! If we have a task name change, 0195 IF (.NOT. ASSERT) GO TO 9100! It may not be negated. 0196 SWIERR = 'has invalid task name.\' 0197 IX = 1 ! Task name is at word 1. 0198 END IF 0199 IF (SWABBR .EQ. 'PAR') THEN ! If we have a partition name, 0200 IF (.NOT. ASSERT) GO TO 9100! It may not be negated. 0201 SWIERR = 'has invalid partition name.\' 0202 IX = 3 ! Partition name at word 3. 0203 END IF 0204 IF (IX .GT. 0) THEN ! If either task or partition, 0205 IF (IBEG .LE. 0) GO TO 9100 ! If missing spec, error. 0206 I = IEND - IBEG + 1 ! Get the number of chars. 0207 LBLBLK(IX,1) = 0 ! Clear out the 0208 LBLBLK(IX+1,1) = 0 ! name. 0209 IF (I .GT. 0) THEN ! If a task name was passed, 0210 J = IRAD50(I,SWITCH( ! Convert it to 1 IBEG:IEND), ! RAD-50 2 JNAME) ! (trial basis). 0211 IF (J .LT. I) ! If incomplete conversion, 1 GO TO 9100 ! Error out. 0212 J = IRAD50(I,SWITCH( ! Convert it to 1 IBEG:IEND), ! RAD-50 2 LBLBLK(IX,1)) ! for real. 0213 END IF 0214 GO TO 3200 ! Go handle next switch. 0215 END IF PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 8 TIZ.FTN;1 /CK/F77/TR:ALL/WR C C....................................................................... C C /LIBR=nam:ac - Change library/common acces C 0216 IF (SWABBR .EQ. 'LIBR') THEN ! If it's the LIBR switch, 0217 IF (.NOT. ASSERT) GO TO 9100! Cannot be negated. 0218 SWIERR = 'has invalid library/common name.\' 0219 IF (IBEG .LE. 0) GO TO 9100 ! If no name passed, error 0220 I = IEND - IBEG + 1 ! Get name length. 0221 IF (I .LE. 0) GO TO 9100 ! If null, error. 0222 LIBNAM(1) = 0 ! Init. the library/ 0223 LIBNAM(2) = 0 ! common name. 0224 IF (SWITCH(IBEG:IEND) .EQ. ! If wildcard, 1 '*') THEN ! 0225 LIBLST = NSWIT ! Make swit no current 0226 ELSE ! if not, 0227 J = IRAD50(I,SWITCH( ! Decode the 1 IBEG:IEND),LIBNAM) ! name. 0228 IF (J .LT. I) GO TO 9100! If an error, quit. 0229 END IF ! 0230 IBEG = IEND + 2 ! Skip over the name. 0231 SWIERR = 'has invalid access specification.\' 0232 IEND = INDEX(SWITCH(IBEG:), ! Find the access spec. 1 ':') 0233 IF (IEND .NE. 3) GO TO 9100 ! If not two chars, bad. 0234 IEND = IEND + IBEG - 2 ! Point to end of it. 0235 MASKS = 0 ! Initialize the 0236 MASKC = 0 ! masks. 0237 SWABBR = SWITCH(IBEG:IEND) ! Pick up access spec. 0238 IF (SWABBR .EQ. 'RO') THEN ! If readonly, 0239 MASKC = '100000'O ! set the mask. 0240 ELSE 0241 IF (SWABBR.EQ.'RW') THEN! If read/write, 0242 MASKS = '100000'O ! set the mask. 0243 ELSE 0244 GO TO 9100 ! If neither, an error. 0245 END IF 0246 END IF 0247 MASKC = .NOT. MASKC ! Put 'Clear' mask right. 0248 I = 3 ! Init. the index. 0249 3280 I = I + 14 ! Go to next common. 0250 IF (LBLBLK(I+5,1) .EQ. 0) THEN! If none, 0251 IF (LIBLST .GE. NSWIT) ! If a wildcard, this 1 GO TO 3290 ! is normal exit. 0252 SWIERR = 'task not mapped to this library/common.\' 0253 GO TO 9100 ! Else, an error. 0254 END IF 0255 CNDABO = (((LBLBLK(I+10,1) ! Possible problem if 1 .AND. '10'O) .NE. 0) ! making supervisor 2 .AND. MASKS .NE. 0) ! library read/write. 0256 IF (LIBNAM(1) .EQ. 0) THEN ! If processing a wildcard 0257 IF (.NOT. CNDABO) ! Update mask if 1 LBLBLK(I+10,1) = ! reasonable. 2 (LBLBLK(I+10,1) PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 9 TIZ.FTN;1 /CK/F77/TR:ALL/WR 3 .AND. MASKC) 4 .OR. MASKS 0258 GO TO 3280 ! Go process next. 0259 END IF 0260 IF (LBLBLK(I,1) .NE. ! If this is not the 1 LIBNAM(1)) GO TO 3280 ! library/common 0261 IF (LBLBLK(I+1,1) .NE. ! desired, try the 1 LIBNAM(2)) GO TO 3280 ! next one. 0262 IF (CNDABO) THEN ! If something funny, 0263 SWIERR = 'supervisor mode library must be read-only.\' 0264 GO TO 9100 ! error out. 0265 END IF 0266 LBLBLK(I+10,1) = ! Flip the 1 (LBLBLK(I+10,1) .AND. ! access 2 MASKC) .OR. MASKS ! bit. 0267 3290 LIBLST = LIBLST + 1 ! Update libr switch number 0268 GO TO 3200 ! Go for next keyword. 0269 END IF C C....................................................................... C C /XHR=NO - Don't install w/ extrnl hdr C =MAYBE - Allow external header C =YES - Install w/ external header C 0270 MASKS = 0 ! Task flag word mask. 0271 MASKC = 0 0272 IF (SWABBR .EQ. 'XHR') THEN ! If the XHR switch, 0273 IF (.NOT. ASSERT) GO TO 9100! Cannot be negated. 0274 SWIERR = 'has invalid option.\' 0275 IF (IBEG .LE. 0) GO TO 9100 ! If no option passed, error 0276 I = IEND - IBEG + 1 ! Get name length. 0277 IF (I .LE. 0) GO TO 9100 ! If none, error. 0278 I = INDEX('=YES=NO=MAYBE', ! Validate the 1 SWITCH(IBEG-1:IEND)) ! keyword. 0279 IF (I .LE. 0) GO TO 9100 ! If invalid, error. 0280 IF (SWITCH(IBEG:IBEG) .EQ. 'Y')! If want xhr, 1 THEN 0281 MASKS = '4'O ! set the 'want' bit. 0282 MASKC = '2'O ! clear 'don't want'. 0283 END IF 0284 IF (SWITCH(IBEG:IBEG) .EQ. 'N')! If don't want xhr, 1 THEN 0285 MASKS = '2'O ! set 'don't want' bit. 0286 MASKC = '4'O ! clear 'want' bit. 0287 END IF 0288 IF (SWITCH(IBEG:IBEG) .EQ. 'M')! If don't care, 1 MASKC = '6'O ! clear both bits. 0289 END IF ! Fall to rest of flag code C C....................................................................... C C /[NO]CP - Enable/disable checkpointing C /[NO]IP - Kill warning when map I/O page. C /[NO]PM - Generate postmortem dump. PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 10 TIZ.FTN;1 /CK/F77/TR:ALL/WR C /[NO]SL - Install with slave attribute C 0290 SWABBR = SWITCH(:2) ! All 2-char abbrs. 0291 IF (SWABBR .EQ. 'CP') ! Handle the checkpoint switch. 1 MASKC = '100'O 0292 IF (SWABBR .EQ. 'IP') ! Handle the I/O page switch. 1 MASKC = '10'O 0293 IF (SWABBR .EQ. 'PM') ! Handle the PMD switch. 1 MASKS = '10000'O 0294 IF (SWABBR .EQ. 'SL') ! Handle the slave switch. 1 MASKS = '4000'O 0295 IF (.NOT. ASSERT) THEN ! If switch was negated, 0296 I = MASKS ! Swap 0297 MASKS = MASKC ! the 0298 MASKC = I ! mask 0299 END IF 0300 I = MASKS .OR. MASKC ! Save 'set bit' indicator. 0301 MASKC = .NOT. MASKC ! Invert the 'clear' mask. 0302 TSKFLG = (TSKFLG ! Set/clear the desired bit 1 .AND. MASKC) .OR. MASKS ! in the flags word. 0303 IF (I .NE. 0) GO TO 3200 ! If a bit flipped, go for more. C C....................................................................... C C /[NO]DU - Dump label block after run C 0304 IF (SWABBR .EQ. 'DU') THEN ! If the dump switch, 0305 IF (ASSERT) THEN ! If want a dump, 0306 OPEN (UNIT=4,NAME=OUTFIL, ! Open the dump 1 TYPE='UNKNOWN',ACCESS='APPEND') ! file. 0307 CALL R50ASC(6,LBLBLK(1,1),TNAME) ! Name to R50 0308 CALL R50ASC(6,LBLBLK(3,1),LNAME) ! Par, too. 0309 J = TSKFLG ! Get flags. 0310 K = 1 ! Init. the 0311 SWITCH = ' ' ! swit buff. 0312 DO 3520 I=1,16 ! For each bit, 0313 IF (J .LT. 0) THEN ! If it's set 0314 SWITCH(K:) = LBFLG(I) ! save, 0315 K = K + 5 ! skip. 0316 END IF 0317 J = (J .AND. '77777'O)*2 ! Get next. 0318 3520 CONTINUE 0319 K = K - 1 ! Adjust end. 0320 IF (K .LE. 0) K = 1 ! Fudge if null. 0321 I = INDEX(TSKFIL,' ') - 1 ! File name end 0322 WRITE (4,93520) TSKFIL(:I), TNAME, ! Write data 1 LNAME, SWITCH(:K), ! accum. 2 LBLBLK(IPRIL,1), LBLBLK(15,1), ! so 3 LBLBLK(16,1), LBLBLK(14,1) ! far. 0323 CCBYTE = '0' ! Dbl space first. 0324 I = 17 ! Inx of 1st comm 0325 GO TO 3540 ! Check for it. 0326 3530 SWITCH = ' Libr:' ! Assume normal 0327 IF ((LBLBLK(I+10,1) .AND. '10'O) .NE. 0) ! If super, 1 SWITCH = ' Suplib:' ! say so. PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 11 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0328 J = INDEX(SWITCH,':')+2 ! Space for name. 0329 IF (LBLBLK(I,1) .NE. 0) THEN ! If libr named, 0330 CALL R50ASC(6,LBLBLK(I,1),SWITCH(J:))! To ASCII 0331 ELSE ! otherwise 0332 SWITCH(J:) = '' ! say none. 0333 END IF 0334 J = INDEX(SWITCH(J:),' ') + J - 1 ! Find end. 0335 SWITCH(J:) = ':RO' ! Assume RO. 0336 IF (LBLBLK(I+10,1) .LT. 0) ! If read/write, 1 SWITCH(J+1:) = 'RW' ! say so. 0337 IF ((LBLBLK(I+10,1) .AND. '10'O) .NE. 0) ! If super, 1 SWITCH(J:) = ' ' ! No RO. 0338 J = INDEX(SWITCH(J:),' ') + J - 1 ! Find new end. 0339 WRITE (4,93530) CCBYTE, SWITCH(:J), ! Write it. 1 LBLBLK(I+12,1), LBLBLK(I+13,1), 2 LBLBLK(I+11,1) 0340 CCBYTE = ' ' ! Single space. 0341 I = I + 14 ! Next libr. 0342 3540 IF (LBLBLK(I+5,1) .NE. 0) GO TO 3530 ! If more, get. 0343 CCBYTE = '0' ! Dbl space. 0344 DO 3550 I = 1,LBLBLK(IPRIL+6,1) ! For each LUN, 0345 SWITCH = ' :' ! Assume no assign. 0346 IF (LUNTBL(1,I) .GT. 0) THEN ! If an assign, 0347 J = 3 ! 3 dgt unt. 0348 IF (LUNTBL(2,I) .LT. 64) ! If < 100 octal 1 J = 2 ! 2 digits. 0349 IF (LUNTBL(2,I) .LT. 8) ! If < 10 octal 1 J = 1 ! 1 digit. 0350 WRITE (SWITCH,93540) ! Encode the 1 LUNTBL(1,I), LUNTBL(2,I)! assign. 0351 END IF 0352 J = INDEX(SWITCH,':') + 1 ! Find whole thing. 0353 WRITE (4,93550) CCBYTE, I, 1 SWITCH(:J) ! Write it. 0354 CCBYTE = ' ' ! single space. 0355 3550 CONTINUE 0356 CLOSE (UNIT=4) ! Close file. 0357 END IF 0358 GO TO 3200 ! Go for more. 0359 END IF C C....................................................................... C C /[NO]RO - Don't update task image C 0360 IF (SWABBR .EQ. 'RO') THEN ! If the readonly switch, 0361 RDONLY = ASSERT ! set its state, 0362 GO TO 3200 ! go for more switches. 0363 END IF C C....................................................................... C C /HE - Print help message. C 0364 IF (SWABBR .EQ. 'HE') THEN ! If the help switch, PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 12 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0365 CALL HLPSUB(OUTFIL,DEFSWI) ! print the message. 0366 GO TO 3200 ! go for more switches. 0367 END IF C C....................................................................... C C Illegal switch. C 0368 SWABBR = SWITCH ! Pick up entire sw. 0369 SWIERR = 'is not a legal switch.\' ! Unrecognized switch. 0370 GO TO 9100 ! Handle it. C C....................................................................... C C End of switches - Decide what to do. C 0371 3900 IF (PROMPT .AND. .NOT. DFLT) GO TO 3000 ! If intractv, get more. C C----------------------------------------------------------------------- C C Write the label blocks back. C 0372 4000 IF (NSWIT .LE. 0 .AND. DEFSWI .NE. ' ') ! If default processing, 1 THEN 0373 SWILST = DEFSWI ! Set up switches. 0374 CALL INPROC(LEN(SWILST),SWILST, ! Process just in 1 BUFLEN) ! case. 0375 BUFLEN = BUFLEN + 1 ! Add to buff. len. 0376 SWILST(BUFLEN:BUFLEN) = '/' ! Terminate buffer. 0377 NSWIT = NSWIT + 1 ! Prevent loop. 0378 DFLT = .TRUE. ! Default proc. 0379 GO TO 3200 ! Go process line. 0380 END IF 0381 IF (ABORT .AND. .NOT. PROMPT) THEN ! If a processing error, 0382 WRITE (5,94000) ! remind the user, 0383 GO TO 9900 ! and don't update. 0384 END IF 0385 IF (LBLBLK(1,1) .EQ. DOTS .AND. ! If spawnable and 1 (TSKFLG .AND. '4000'O) .NE. 0) ! slave, 2 WRITE (5,94010) ! warn user. 0386 IF (RDONLY) THEN ! If in readonly mode, 0387 WRITE (5,94020) ! remind user, 0388 GO TO 9900 ! and don't update. 0389 END IF 0390 DO 4080 I=1,3 ! Write back the 0391 WRITE (1'I) (LBLBLK(J,I),J=1,256) ! label blocks. 0392 4080 CONTINUE 0393 GO TO 9900 ! Go clean up. C C======================================================================= C C Error Handling. C C----------------------------------------------------------------------- C PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 13 TIZ.FTN;1 /CK/F77/TR:ALL/WR C Open error on task image file. C 0394 9000 I = INDEX(TSKFIL,' ') - 1 ! Find end of task file name. 0395 WRITE (5,99000) TSKFIL(:I) ! Write the error. 0396 ABORT = .TRUE. ! Force an abort. 0397 GO TO 9900 ! Go die. C C----------------------------------------------------------------------- C C Switch/Keyword errors of all kinds. C 0398 9100 I = INDEX(SWITCH,' ') ! Find end of switch. 0399 IF (I .GT. 0) I = MAX(I-2,1) ! If space found, take out. 0400 IF (I .LE. 0) I = LEN(SWITCH) ! If no space, use all. 0401 ABORT = .TRUE. ! Fatal error. 0402 J = INDEX(SWIERR,'\') - 1 ! Size the error message. 0403 IF (J .LE. 0) THEN ! If none, 0404 SWIERR = ' ' ! Fudge 0405 J = 1 ! one. 0406 END IF 0407 WRITE (5,99100) SWITCH(:I), ! Write the error 1 SWIERR(:J) ! message. 0408 GO TO 3200 ! Go for next switch. C C======================================================================= C C Exit C 0409 9900 CLOSE (UNIT=1) ! Close task file if any. 0410 IF (PROMPT) GO TO 2000 ! If interactive, go again. 0411 9990 CLOSE (UNIT=1) ! Close task file if any. 0412 CALL EXIT ! Exit. 0413 END PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 14 TIZ.FTN;1 /CK/F77/TR:ALL/WR PROGRAM SECTIONS Number Name Size Attributes 1 $CODE1 015626 3531 RW,I,CON,LCL 2 $PDATA 002376 639 RW,D,CON,LCL 3 $IDATA 000172 61 RW,D,CON,LCL 4 $VARS 007232 1869 RW,D,CON,LCL 5 $TEMPS 000010 4 RW,D,CON,LCL VARIABLES Name Type Address Name Type Address Name Type Address Name Type Address Name Type Address ABORT I*2 4-006000 ASSERT I*2 4-006002 BUFLEN I*2 4-006004 CCBYTE CHR 4-006006 CMDLIN CHR 4-006007 CNDABO I*2 4-006130 DEFSWI CHR 4-006132 DFLT I*2 4-006256 DOTS I*2 4-006252 DUMP I*2 4-006254 I I*2 4-007210 IBEG I*2 4-006260 IDEV I*2 4-007212 IEND I*2 4-006262 ILUN I*2 4-007216 IPRI I*2 4-007220 IPRIL I*2 4-006264 IUNT I*2 4-007214 IX I*2 4-007222 J I*2 4-007206 JNAME I*4 4-006266 K I*2 4-007230 LIBLST I*2 4-006372 MASKC I*2 4-007226 MASKS I*2 4-007224 NOLUNS I*2 4-006406 NSWIT I*2 4-006410 OUTDFL CHR 4-006462 OUTFIL CHR 4-006412 PROMPT I*2 4-006532 RDONLY I*2 4-006534 SWABBR CHR 4-006536 SWIERR CHR 4-006550 SWILST CHR 4-006670 SWITCH CHR 4-007010 TSKDFL CHR 4-007136 TSKFIL CHR 4-007066 TSKFLG I*2 4-000030 ARRAYS Name Type Address Size Dimensions BYTUIC L*1 4-000016 000002 1 (2) LBFLG CHR 4-006272 000100 32 (16) LBLBLK I*2 4-000000 006000 1536 (512,3) LIBNAM I*2 4-006374 000004 2 (2) LNAME I*2 4-006400 000006 3 (3) LUNTBL I*2 4-002000 002000 512 (2,256) TNAME I*2 4-007060 000006 3 (3) LABELS Label Address Label Address Label Address Label Address Label Address 2000 1-000444 2760 ** 2780 ** 3000 1-002456 3200 1-002760 3240 1-004512 3280 1-007172 3290 1-007754 3520 ** 3530 1-011756 3540 1-013140 3550 ** 3900 1-014256 4000 1-014304 4080 ** 9000 1-015102 9100 1-015210 9900 1-015514 9990 1-015550 90200' 2-000000 92000' 2-000024 92020' 2-000066 93000' 2-000072 93220' 2-000132 93240' 2-000140 93260' 2-000144 93520' 2-000150 93530' 2-000370 93540' 2-000426 93550' 2-000442 94000' 2-000466 94010' 2-000556 94020' 2-000702 99000' 2-000772 99100' 2-001036 FUNCTIONS AND SUBROUTINES REFERENCED CLOS$ EXIT FILDEF FILSTR GETMCR GETTSK HLPSUB INPROC IRAD50 OPEN$ R50ASC $INDEX PDP-11 FORTRAN-77 V4.1-2 14:55:02 6-May-83 Page 15 TIZ.FTN;1 /CK/F77/TR:ALL/WR Total Space Allocated = 027660 6104 No FPP Instructions Generated PDP-11 FORTRAN-77 V4.1-2 14:55:58 6-May-83 Page 16 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0001 SUBROUTINE INPROC(BUFLEN,BUF,LENOUT) 0002 INTEGER*2 BUFLEN ! Length of buffer. 0003 LOGICAL*1 BUF(BUFLEN) ! Buffer to convert. 0004 INTEGER*2 LENOUT ! Converted length. C 0005 LOGICAL*1 AYE ! = ASCII 'a'. 0006 LOGICAL*1 SPACE ! = ASCII . 0007 LOGICAL*1 ZEE ! = ASCII 'z'. C 0008 DATA AYE /'141'O/ 0009 DATA SPACE /'40'O/ 0010 DATA ZEE /'172'O/ C 0011 LENOUT = 0 ! Init the converted length. C 0012 DO 100 I=1,BUFLEN ! For each character, 0013 IF (BUF(I) .LE. SPACE) ! Ignore spaces and control 1 GO TO 100 ! characters. 0014 IF (BUF(I) .GE. AYE .AND. ! If it's a lower-case 1 BUF(I) .LE. ZEE) ! alphabetic, 2 BUF(I) = BUF(I) - '40'O ! convert to upper-case. 0015 LENOUT = LENOUT + 1 ! Count another character. 0016 BUF(LENOUT) = BUF(I) ! Move the character down. 0017 100 CONTINUE C 0018 DO 200 I=LENOUT+1,BUFLEN ! Pad the remainder of the 0019 BUF(I) = SPACE ! string with spaces. 0020 200 CONTINUE C 0021 RETURN 0022 END PDP-11 FORTRAN-77 V4.1-2 14:55:58 6-May-83 Page 17 TIZ.FTN;1 /CK/F77/TR:ALL/WR PROGRAM SECTIONS Number Name Size Attributes 1 $CODE1 000420 136 RW,I,CON,LCL 3 $IDATA 000020 8 RW,D,CON,LCL 4 $VARS 000006 3 RW,D,CON,LCL 5 $TEMPS 000002 1 RW,D,CON,LCL ENTRY POINTS Name Type Address Name Type Address Name Type Address Name Type Address Name Type Address INPROC 1-000000 VARIABLES Name Type Address Name Type Address Name Type Address Name Type Address Name Type Address AYE L*1 4-000000 BUFLEN I*2 F-000002* I I*2 4-000004 LENOUT I*2 F-000006* SPACE L*1 4-000001 ZEE L*1 4-000002 ARRAYS Name Type Address Size Dimensions BUF L*1 F-000004* ** (*) LABELS Label Address Label Address Label Address Label Address Label Address 100 1-000304 200 ** Total Space Allocated = 000450 148 No FPP Instructions Generated PDP-11 FORTRAN-77 V4.1-2 14:56:01 6-May-83 Page 18 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0001 SUBROUTINE HLPSUB(OUTFIL,DEFSWI) 0002 CHARACTER*40 OUTFIL ! Output file name. 0003 CHARACTER*80 DEFSWI ! Default switches. C 0004 OPEN (UNIT=4,NAME=OUTFIL, ! Open the output 1 TYPE='UNKNOWN',ACCESS='APPEND') ! file. 0005 WRITE (4,100) ! Write the data. 0006 J = INDEX(DEFSWI,' ') - 1 ! Find end of deflts. 0007 IF (J .GT. 0) ! If defaults, 1 WRITE (4,200) DEFSWI(:J) ! write them out. 0008 CLOSE (UNIT=4) ! Close it. 0009 RETURN 0010 100 FORMAT ( * '0TIZ is a task to simplify the modification of task',/, * ' image files. It offers TKB-like keyword modifica-',/, * ' tion of those task attributes that are represented',/, * ' as values in label blocks 0-2. The keywords impli-',/, * ' mented at the moment are:',/, * ' ',8X,'/ASG=dev:lun - Change LUN device assignment',/, * ' ',8X,'/[NO]CP - Enable/disable checkpointing',/, * ' ',8X,'/[NO]DU - Dump label block after run',/, * ' ',8X,'/HE - Help message',/, * ' ',8X,'/[NO]IP - Warning when map I/O page',/, * ' ',8X,'/LIBR=nam:ac - Change library/common access',/, * ' ',8X,'/[NO]PM - Generate postmortem dump',/, * ' ',8X,'/PAR=name - Change partition name',/, * ' ',8X,'/PRI=n - Change priority',/, * ' ',8X,'/[NO]RO - Don''t update task image',/, * ' ',8X,'/[NO]SL - Install with slave attribute',/, * ' ',8X,'/TASK=name - Change task name',/, * ' ',8X,'/XHR=NO - Don''t install w/ external hdr',/, * ' ',8X,' =MAYBE - Allow external header',/, * ' ',8X,' =YES - Install with external header',/, * ' Those switches/keywords which can be negated are',/, * ' negated by prefacing either "NO" or "-".',/, * ' ',/, * ' TIZ can be invoked either as a command line or',/, * ' in conversational mode.',/, * ' ') 0011 200 FORMAT ( * ' If no switches or keywords are specified, the follow-',/, * ' ing switches will be used:',/, * ' ',8X,A,/, * ' ') 0012 END PDP-11 FORTRAN-77 V4.1-2 14:56:01 6-May-83 Page 19 TIZ.FTN;1 /CK/F77/TR:ALL/WR PROGRAM SECTIONS Number Name Size Attributes 1 $CODE1 000236 79 RW,I,CON,LCL 2 $PDATA 002276 607 RW,D,CON,LCL 3 $IDATA 000034 14 RW,D,CON,LCL 4 $VARS 000002 1 RW,D,CON,LCL ENTRY POINTS Name Type Address Name Type Address Name Type Address Name Type Address Name Type Address HLPSUB 1-000000 VARIABLES Name Type Address Name Type Address Name Type Address Name Type Address Name Type Address DEFSWI CHR F-000004* J I*2 4-000000 OUTFIL CHR F-000002* LABELS Label Address Label Address Label Address Label Address Label Address 100' 2-000000 200' 2-002122 FUNCTIONS AND SUBROUTINES REFERENCED CLOS$ OPEN$ $INDEX Total Space Allocated = 002572 701 No FPP Instructions Generated PDP-11 FORTRAN-77 V4.1-2 14:56:03 6-May-83 Page 20 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0001 SUBROUTINE FILDEF(NAME,DEF) 0002 CHARACTER*40 NAME,DEF C 0003 CHARACTER*40 SCR C 0004 INAM = 1 0005 IDEF = 1 0006 ISCR = 1 0007 DO 100 I=1,5 0008 JNAM = INDEX(NAME(INAM:),'\') + INAM - 2 0009 JDEF = INDEX(DEF(IDEF:),'\') + IDEF - 2 0010 IF (JNAM .GE. INAM) THEN 0011 SCR(ISCR:) = NAME(INAM:JNAM) 0012 ISCR = ISCR + JNAM - INAM + 1 0013 ELSE 0014 IF (JDEF .GE. IDEF) THEN 0015 SCR(ISCR:) = DEF(IDEF:JDEF) 0016 ISCR = ISCR + JDEF - IDEF + 1 0017 END IF 0018 END IF 0019 INAM = JNAM + 2 0020 IDEF = JDEF + 2 0021 100 CONTINUE 0022 NAME = SCR 0023 RETURN 0024 END PDP-11 FORTRAN-77 V4.1-2 14:56:03 6-May-83 Page 21 TIZ.FTN;1 /CK/F77/TR:ALL/WR PROGRAM SECTIONS Number Name Size Attributes 1 $CODE1 000670 220 RW,I,CON,LCL 2 $PDATA 000006 3 RW,D,CON,LCL 3 $IDATA 000006 3 RW,D,CON,LCL 4 $VARS 000064 26 RW,D,CON,LCL 5 $TEMPS 000004 2 RW,D,CON,LCL ENTRY POINTS Name Type Address Name Type Address Name Type Address Name Type Address Name Type Address FILDEF 1-000000 VARIABLES Name Type Address Name Type Address Name Type Address Name Type Address Name Type Address DEF CHR F-000004* I I*2 4-000056 IDEF I*2 4-000052 INAM I*2 4-000050 ISCR I*2 4-000054 JDEF I*2 4-000062 JNAM I*2 4-000060 NAME CHR F-000002* SCR CHR 4-000000 LABELS Label Address Label Address Label Address Label Address Label Address 100 ** FUNCTIONS AND SUBROUTINES REFERENCED $INDEX Total Space Allocated = 000774 254 No FPP Instructions Generated PDP-11 FORTRAN-77 V4.1-2 14:56:06 6-May-83 Page 22 TIZ.FTN;1 /CK/F77/TR:ALL/WR 0001 SUBROUTINE FILSTR(NAME) 0002 CHARACTER*40 NAME C 0003 CHARACTER*10 ELEM(5) 0004 INAM = 1 0005 MNAM = INDEX(NAME,' ') 0006 DO 10 I=1,5 0007 ELEM(I) = ' ' 0008 10 CONTINUE C 0009 MNAM = MNAM - 1 0010 IF (MNAM .LT. INAM) GO TO 90 0011 JNAM = INDEX(NAME(INAM:MNAM),':') + INAM - 1 0012 IF (JNAM .GE. INAM) THEN 0013 ELEM(1) = NAME(INAM:JNAM) 0014 INAM = JNAM + 1 0015 END IF C 0016 IF (MNAM .LT. INAM) GO TO 90 0017 JNAM = INDEX(NAME(INAM:MNAM),']') + INAM - 1 0018 IF (JNAM .GE. INAM) THEN 0019 ELEM(2) = NAME(INAM:JNAM) 0020 INAM = JNAM + 1 0021 END IF C 0022 IF (MNAM .LT. INAM) GO TO 90 0023 JNAM = INDEX(NAME(INAM:MNAM),';') + INAM - 1 0024 IF (JNAM .GE. INAM) THEN 0025 ELEM(5) = NAME(JNAM:MNAM) 0026 MNAM = JNAM - 1 0027 END IF C 0028 IF (MNAM .LT. INAM) GO TO 90 0029 JNAM = INDEX(NAME(INAM:MNAM),'.') + INAM - 1 0030 IF (JNAM .GE. INAM) THEN 0031 ELEM(4) = NAME(JNAM:MNAM) 0032 MNAM = JNAM - 1 0033 END IF C 0034 IF (MNAM .LT. INAM) GO TO 90 0035 ELEM(3) = NAME(INAM:MNAM) C 0036 90 INAM = 1 0037 DO 100 I = 1,5 0038 JNAM = INDEX(ELEM(I),' ') - 1 0039 IF (JNAM .GT. 0) THEN 0040 NAME(INAM:) = ELEM(I)(:JNAM) 0041 END IF 0042 INAM = INAM + JNAM + 1 0043 NAME(INAM-1:) = '\' 0044 100 CONTINUE 0045 RETURN 0046 END PDP-11 FORTRAN-77 V4.1-2 14:56:06 6-May-83 Page 23 TIZ.FTN;1 /CK/F77/TR:ALL/WR PROGRAM SECTIONS Number Name Size Attributes 1 $CODE1 001654 470 RW,I,CON,LCL 2 $PDATA 000032 13 RW,D,CON,LCL 3 $IDATA 000046 19 RW,D,CON,LCL 4 $VARS 000072 29 RW,D,CON,LCL 5 $TEMPS 000002 1 RW,D,CON,LCL ENTRY POINTS Name Type Address Name Type Address Name Type Address Name Type Address Name Type Address FILSTR 1-000000 VARIABLES Name Type Address Name Type Address Name Type Address Name Type Address Name Type Address I I*2 4-000066 INAM I*2 4-000062 JNAM I*2 4-000070 MNAM I*2 4-000064 NAME CHR F-000002* ARRAYS Name Type Address Size Dimensions ELEM CHR 4-000000 000062 25 (5) LABELS Label Address Label Address Label Address Label Address Label Address 10 ** 90 1-001304 100 ** FUNCTIONS AND SUBROUTINES REFERENCED $INDEX Total Space Allocated = 002050 532 No FPP Instructions Generated