FTN4,L,B
C PROGRAM UTIL
C PURPOSE : 
C THE PURPOSE OF UTIL IS TO PROVIDE "CONVERSATIONAL" ACCESS TO THE
C EXTENDED FILE MANAGEMENT PACKAGE SO THAT A USER MAY CREATE/DESTROY, 
C OPEN/CLOSE,OBTAIN STATUS,REPACK,INITIALIZE THE DISC, AND COPY FILES;
C I.E. PERFORM MOST OF THE FUNCTIONS CONTAINED IN THE EXTENDED FILE 
C MANAGEMENT PACKAGE
C THE FUNCTIONS "READ AND WRITE " ARE NOT 
C INCORPORATED IN THIS PROGRAM BECAUSE OF POSSIBLE INCLUSION IN AN
C INFORMATION RETRIEVAL SYSTEM. THE DEFINE FUNCTION IS INCORPORATED 
C INTERNALLY AND DEFINES 1 OPEN TABLE AND 1 TEMPORARY RECORD BUFFER OF
C 4 SECTORS EVERYTIME UTIL IS CALLED. 
C FUNCTIONAL DESCRIPTION: 
C UTIL IS VERY SIMILAR IN OPERATION TO THE "EDIT" PROGRAM OF DOS-M
C IN THAT IT ACCEPTS DIRECTIVES FROM THE KEYBOARD TO PROVIDE FILE 
C MANIPULATION(ALTHOUGH THE DIRECTIVES ENTERED ARE FUNCTIONALLY 
C DIFFERENT). IT IS DIFFERENT TO THE EXTENT THAT ONE OR MORE FILES
C MAY BE MANIPULATED CONCURRENTLY.
C 
C IN OPERATION,UTIL RESPONDS TO A KEYBOARD INPUT BY CALLING THE 
C APPROPRIATE EFMP FUNCTION(AN ERROR IS PRINTED IF THE INPUT IS INVALID)
C . AT THE END OF PROCESSING,UTIL PRINTS RESULTS(OR AN ERROR MESSAGE) 
C AND AWAITS FURTHER INPUTS.
C 
C KEYBOARD INPUTS INCLUDE;
C 
C TO CREATE A FILE: 
C /CRE,FNAME,PAKNO,FLGTH,RLGTH,SCODE,USTAT
C 
C TO DESTROY A FILE:
C /DES,FNAME,PAKNO,SCODE
C 
C TO OPEN A FILE: 
C /OPE,FNAME,PAKNO,RCDNO,SCODE
C 
C TO CLOSE A FILE:
C /CLO,FNAME,USTAT
C 
C TO INITIALIZE A PACK NO.: 
C /INI,PAKNO,DIRSZ
C 
C TO RESET THE HIGHEST RECORD ACCESSED: 
C /RES,FNAME,PAKNO,RCDNO
C 
C TO OBTAIN FILE STATUS USE ONE OF THE FOLLOWING
C 
C TO DUMP FILE DIRECTORY: 
C /STA,DF,FNAME,PAKNO 
C 
C TO DETERMINE IF A FILE HAS BEEN OPENED: 
C /STA,FO,FNAME 
C 
C TO PROVIDE A SECURITY CODE CHECK: 
C /STA,SC,FNAME,PAKNO,SCODE 
C 
C TO DETERMINE THE NUMBER OF AVAILABLE SECTORS BETWEEN THE HIGHEST
C RECORD ACCESSED IN A FILE AND THE END OF A FILE:
C /STA,LR,FNAME,PAKNO 
C 
C TO DETERMINE THE NUMBER OF AVAILABLE SECTORS LEFT BETWEEN THE LAST
C FILE IN THE PACK,AND THE END OF THE PACK: 
C /STA,LF,PAKNO 
C 
C TO OBTAIN THE NAME OF THE NTH FILE ON THE PACK INDICATED BY PAKNO 
C WHERE N IS A NUMBER BETWEEN 1 AND THE MAXIMUM NUMBER OF FILES ON A
C PACK: 
C /STA,NF,PAKNO,STATB 
C 
C TO OBTAIN THE NTH PACK NO. ON A SUBCHANNEL WHERE N IS A NUMBER
C BETWEEN 1 AND THE MAXIMUM NUMBER OF PACK NO.'S ON A PLATTER:
C /STA,AP,FNAME,STATB 
C 
C TO REPACK EXISTING PACKS: 
C /REP,PAKNO
C 
C IN ORDER TO COPY FILES: 
C /COP,FNAME,PAKNO
C 
C TO CHANGE THE FILE NAME:
C /CHA,FNAM1,FNAM2,PAKNO,SCODE
C 
C TO POST FILES:
C /POS
C 
C TO DECREASE FILE SIZE:
C /BRI,FNAME,SCODE
C 
C IN RESPONSE TO AN           INPUT,UTIL EXECUTES A COMPUTED GO TO THAT 
C ACCESSES THE PARTICULAR CODE                 THAT PROCESSES THIS INPUT
C FOR INSTANCE,THE INPUT OF /CRE,LCB70,1,10,10,-1,0 ACCESSES STATEMENT
C NUMBER 6 IN THE PROGRAM. FIRST OF ALL,THE FILE NAME LCB70 IS PROCESSED
C BY THE SUBROUTINE FNAME WHICH PACKS IT INTO 3 WORDS AND STORES IT IN
C THE ARRAY IFNAM. NEXT,THE PACK NUMBER 1 IS EXTRACTED FROM THE INPUT 
C FIELD BY THE SUBROUTINE PAKNO(WHICH IS ACTUALLY ONLY A SPECIAL CASE OF
C THE SUBROUTINE INTR) AND STORED IN IPAKN(PAKNO MAKES SURE THAT THE
C PACK NUMBER IS 1 TO 999,0,OR -1 TO -999).THE OTHER DATA IN THE INPUT
C FIELD ARE PROCESSED BY THE SUBROUTINE INTR WHICH FORMS INTEGER VALUES 
C FROM THE ASCII INPUT.IF AN ERROR HAS OCCURRED IN THE INPUT FIELD, 
C CONTROL IS TRANSFERRED TO STATEMENT 17 WHICH PRINTS AN ERROR AND
C RETURNS TO STATEMENT 5 FOR FURTHER INPUT. OTHERWISE,THE EXEC CALL IS
C EXECUTED AND LCB70 IS CREATED OR AN ERROR HAS OCCURRED.IF THE FILE HAS
C BEEN CREATED,UTIL RETURNS THE RESULTS OF ITS ACTION ON THE LIST OUTPUT
C DEVICE(I.E. "FILE LCB70 CREATED ON PACK # 1 ETC.").IF AN ERROR
C OCCURRED,CONTROL IS TRANSFERRED TO STATEMENT 17 AS ABOVE. IN EITHER 
C CASE,CONTROL FINALLY RETURNS TO STATEMENT 5,WHERE UTIL AWAITS FURTHER 
C INPUTS. OTHER INPUTS ARE PROCESSED SIMILARLY BY 1) EXECUTING A SERIES 
C OF SUBROUTINES WHICH INTERROGATE THE INPUT FIELD  2) PERFORMING THE 
C ACTUAL EXEC CALL AND 3) PRINTING RESULTS. 
C 
C 
C 
      PROGRAM UTIL
      DIMENSION JATOE(62),IDIR(72),IDRT(60),ISCOD(2),IFNAM(6),IPAKN(7), 
     1NEMTA(7),IPRAM(5),ISTAT(10),IBUFF(512),INOTR(2) 
C 
C 
      COMMON IOPNT(128),ITRBU(512)
C 
C 
      EQUIVALENCE(IUSTA,ISCOD(2)) 
C 
C 
      DATA IETYP,KDEF/0,0/
      DATA IDRT(1),IDRT(2),IDRT(3)/60500B,141500B,154500B/               /CR
      DATA IDRT(4),IDRT(5),IDRT(6)/142500B,60500B,142100B/               E/D
      DATA IDRT(7),IDRT(8),IDRT(9)/142500B,161100B,60500B/               ES/
      DATA IDRT(10),IDRT(11),IDRT(12)/153100B,153500B,142500B/           OPE
      DATA IDRT(13),IDRT(14),IDRT(15)/60500B,141500B,151500B/            /CL
      DATA IDRT(16),IDRT(17),IDRT(18)/153100B,60500B,141100B/            O/B
      DATA IDRT(19),IDRT(20),IDRT(21)/154500B,144500B,60500B/            RI/
      DATA IDRT(22),IDRT(23),IDRT(24)/161100B,161500B,140500B/           STA
      DATA IDRT(25),IDRT(26),IDRT(27)/60500B,154500B,142500B/            /RE
      DATA IDRT(28),IDRT(29),IDRT(30)/153500B,60500B,141500B/            P/C
      DATA IDRT(31),IDRT(32),IDRT(33)/153100B,153500B,60500B/            OP/
      DATA IDRT(34),IDRT(35),IDRT(36)/141500B,144100B,140500B/           CHA
      DATA IDRT(37),IDRT(38),IDRT(39)/60500B,153500B,153100B/            /PO
      DATA IDRT(40),IDRT(41),IDRT(42)/161100B,60500B,142500B/            S/E
      DATA IDRT(43),IDRT(44),IDRT(45)/152500B,142100B,0/
      DATA IDRT(46),IDRT(47),IDRT(48)/0,0,0/
      DATA IDRT(49),IDRT(50),IDRT(51)/0,0,0/
      DATA IDRT(52),IDRT(53),IDRT(54)/0,60500B,154500B/ 
      DATA IDRT(55),IDRT(56)/142500B,161100B/ 
      DATA IDRT(57),IDRT(58)/60500B,144500B/
      DATA IDRT(59),IDRT(60)/152500B,144500B/ 
C 
      DATA JATOE(1),JATOE(2),JATOE(4)/40100B,40500B,41100B/ 
      DATA JATOE(5),JATOE(6),JATOE(7)/55500B,41500B,50100B/ 
      DATA JATOE(8),JATOE(9),JATOE(10)/76500B,46500B,56500B/
      DATA JATOE(11),JATOE(12),JATOE(13)/56100B,47100B,65500B/
      DATA JATOE(14),JATOE(15),JATOE(16)/60100B,45500B,60500B/
      DATA JATOE(17),JATOE(18),JATOE(19)/170100B,170500B,171100B/ 
      DATA JATOE(20),JATOE(21),JATOE(22)/171500B,172100B,172500B/ 
      DATA JATOE(23),JATOE(24),JATOE(25)/173100B,173500B,174100B/ 
      DATA JATOE(26),JATOE(27),JATOE(28)/174500B,42100B,42500B/ 
      DATA JATOE(29),JATOE(30),JATOE(31)/43100B,77100B,43500B/
      DATA JATOE(32),JATOE(33),JATOE(34)/44100B,44500B,140500B/ 
      DATA JATOE(35),JATOE(36),JATOE(37)/141100B,141500B,142100B/ 
      DATA JATOE(38),JATOE(39),JATOE(40)/142500B,143100B,143500B/ 
      DATA JATOE(41),JATOE(42),JATOE(43)/144100B,144500B,150500B/ 
      DATA JATOE(44),JATOE(45),JATOE(46)/151100B,151500B,152100B/ 
      DATA JATOE(47),JATOE(48),JATOE(49)/152500B,153100B,153500B/ 
      DATA JATOE(50),JATOE(51),JATOE(52)/154100B,154500B,161100B/ 
      DATA JATOE(53),JATOE(54),JATOE(55)/161500B,162100B,162500B/ 
      DATA JATOE(56),JATOE(57),JATOE(58)/163100B,163500B,164100B/ 
      DATA JATOE(59),JATOE(60),JATOE(61)/164500B,45100B,46100B/ 
      DATA JATOE(62),JATOE(3)/47500B,40100B/
C 
      DATA NEMTA(1),NEMTA(2),NEMTA(3)/42106B,43117B,51503B/ 
      DATA NEMTA(4),NEMTA(5),NEMTA(6)/46122B,46106B,47106B/ 
      DATA NEMTA(7)/40520B/ 
      DATA NTYP,NWRIT,NREAD,K/1,6,5,57/ 
      DATA INOTR(1),INOTR(2)/1,3/ 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
      CALL RMPAR(IPRAM) 
      CALL EXEC(24,1,IOPNT,128,ITRBU,INOTR,4,IETYP) 
      IF(IPRAM(1))5,500,5 
  500 WRITE(NTYP,501) 
    5 WRITE(NTYP,502) 
      READ(NTYP,503)(IDIR(I),I=1,72)
      CALL ASCEB(IDIR,1,72,IDIR,1,JATOE)
      N=1 
  600 IF(NCOMP(IDIR,1,4,IDRT,N))1,2,1 
    1 IF(N-K)3,4,4
    4 WRITE(NTYP,507) 
      GO TO 5 
    3 N=N+4 
      GO TO 600 
    2 N=(N-1)/4+1 
      N3=5
      IF(IDIR(N3)-65500B)21,362,21
  362 IF(N-10)20,363,20 
  363 IETYP=20
      GO TO 17
   21 IF(IDIR(N3)-40100B)4,22,4 
   22 IF(N3-72)23,20,20 
   23 N3=N3+1 
      GO TO 21
   20 GO TO(6,7,8,9,10,11,12,13,14,15,16,400,450,620,800)N
   17 IF(IETYP)18,19,18 
   18 WRITE(NTYP,504)IETYP
      IETYP=0 
      GO TO 5 
   16 CALL EXEC(6)
      STOP
   19 GO TO(200,201,202,203,204,205,206,207,208,209,16,5,5,650,850)N
C 
CDIRECTIVE /INI,PAKNO,DIRSZ 
C 
  800 CALL PKNUM(IDIR,N3,N1,N2,IPAKN,IETYP) 
      CALL INTR(IDIR,N3,N1,N2,IDRSZ,IETYP)
      IF (IETYP)17,801,17 
  801 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,802,17
  802 CALL EXEC(24,7,IPAKN,IDRSZ,IETYP) 
      GO TO 17
C 
CDIRECTIVE /CRE,FNAME,PAKNO,FLGTH,RLGTH,SCODE,USTAT 
C 
    6 CALL FNAME(IDIR,N3,N1,N2,IFNAM,IETYP,JATOE) 
      CALL PKNUM(IDIR,N3,N1,N2,IPAKN,IETYP) 
      CALL INTR(IDIR,N3,N1,N2,IFLGT,IETYP)
      CALL INTR(IDIR,N3,N1,N2,IRLGT,IETYP)
      CALL INTR(IDIR,N3,N1,N2,ISCOD,IETYP)
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,350,17
  350 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,31,17 
   31 CALL EXEC(24,2,IFNAM,IPAKN,IFLGT,IRLGT,ISCOD,IETYP) 
      GO TO 17
C 
CDIRECTIVE /DES,FNAME,PAKNO,SCODE 
C 
    7 CALL FNAME(IDIR,N3,N1,N2,IFNAM,IETYP,JATOE) 
      CALL PKNUM(IDIR,N3,N1,N2,IPAKN,IETYP) 
      CALL INTR(IDIR,N3,N1,N2,ISCOD,IETYP)
      IF(IETYP)17,351,17
  351 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,32,17 
   32 CALL EXEC(24,3,IFNAM,IPAKN,ISCOD,IETYP) 
      GO TO 17
C 
CDIRECTIVE /OPE,FNAME,PAKNO,RCDNO,SCODE 
C 
    8 CALL FNAME(IDIR,N3,N1,N2,IFNAM,IETYP,JATOE) 
      CALL PKNUM(IDIR,N3,N1,N2,IPAKN,IETYP) 
      CALL INTR(IDIR,N3,N1,N2,IRCDN,IETYP)
      CALL INTR(IDIR,N3,N1,N2,ISCOD,IETYP)
      IF(IETYP)17,352,17
  352 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,51,17 
   51 CALL EXEC(24,4,IFNAM,IPAKN,IRCDN,ISCOD,1,IETYP) 
      GO TO 17
C 
CDIRECTIVE /CLO,FNAME,USTAT 
C 
9     CALL FNAME(IDIR,N3,N1,N2,IFNAM,IETYP,JATOE) 
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,353,17
  353 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,37,17 
   37 CALL EXEC(24,5,IFNAM,IUSTA,IETYP) 
      GO TO 17
C 
CDIRECTIVE /BRI,FNAME,SCODE 
C 
10    CALL FNAME(IDIR,N3,N1,N2,IFNAM,IETYP,JATOE) 
      CALL INTR(IDIR,N3,N1,N2,ISCOD,IETYP)
      IF(IETYP)17,354,17
  354 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,38,17 
   38 CALL EXEC(24,10,2,IFNAM,0,0,ISTAT,IETYP)
      IF(IETYP)17,62,17 
   62 IF(ISTAT(2))63,63,64
   64 IETYP=11
      GO TO 17
   63 ISTAT(2)=ISCOD
      CALL EXEC(24,10,3,IFNAM,ISTAT,0,ISTAT,IETYP)
      IF(IETYP)17,65,17 
   65 IF(ISTAT(3))66,67,66
   66 IETYP=7 
      GO TO 17
   67 CALL EXEC(24,10,1,IFNAM,ISTAT,1,ISTAT,IETYP)
      IF(IETYP)17,39,17 
   39 WRITE(NTYP,506)ISTAT(6),ISTAT(10) 
      READ(NTYP,503)(IDIR(I),I=1,72)
      CALL ASCEB(IDIR,1,72,IDIR,1,JATOE)
      N3=1
   45 IF(IDIR(N3)-40100B)41,42,41 
   42 IF(N3-72)43,44,44 
   43 N3=N3+1 
      GO TO 45
   44 WRITE(NTYP,507) 
      GO TO 39
   41 IF(IDIR(N3)-60500B)46,47,46 
   47 IF(IDIR(N3+1)-142500B)44,5,44 
   46 N3=N3-1 
      CALL INTR(IDIR,N3,N1,N2,IRCDN,IETYP)
      IF(IETYP)17,52,17 
   52 IF(ISTAT(7)-512)49,49,54
   54 WRITE(NTYP,509) 
      GO TO 5 
   49 IF(ISTAT(10))55,71,55 
   55 IFNAM(4)=020040B
      IFNAM(5)=020040B
      IFNAM(6)=020040B
      CALL EXEC(24,2,IFNAM(4),0,ISTAT(10),ISTAT(7),0,IETYP) 
      IF(IETYP)17,56,17 
   56 J=ISTAT(10) 
      DO 61 I=1,J 
      CALL EXEC(24,6,IFNAM,I,IBUFF,IETYP) 
      IF(IETYP)70,58,70 
   58 CALL EXEC(24,8,IFNAM(4),I,IBUFF,IETYP)
      IF(IETYP)70,61,70 
   61 CONTINUE
      CALL EXEC(24,14,IETYP)
   71 CALL EXEC(24,3,IFNAM,ISTAT,ISCOD,IETYP) 
      IF(IETYP)70,24,70 
   24 CALL EXEC(24,2,IFNAM,ISTAT,IRCDN,ISTAT(7),ISCOD,IETYP)
      IF(IETYP)25,79,25 
   25 IETYP=0 
   75 CALL EXEC(24,11,ISTAT,IETYP)
      IF(IETYP)70,76,70 
   76 CALL EXEC(24,2,IFNAM,ISTAT,IRCDN,ISTAT(7),ISCOD,IETYP)
      IF(IETYP)78,79,78 
   79 ITEMP=0 
      GO TO 73
   78 ITEMP=IETYP 
      IETYP=0 
      CALL EXEC(24,2,IFNAM,ISTAT,ISTAT(6),ISTAT(7),ISCOD,IETYP) 
      IF(IETYP)70,73,70 
   73 CALL EXEC(24,4,IFNAM,ISTAT,1,ISCOD,1,IERR)
      IF(ISTAT(10))68,82,68 
   68 J=ISTAT(10) 
      DO 72 I=1,J 
      CALL EXEC(24,6,IFNAM(4),I,IBUFF,IETYP)
      IF(IETYP)70,69,70 
   69 CALL EXEC(24,8,IFNAM,I,IBUFF,IETYP) 
      IF(IETYP)89,72,89 
   72 CONTINUE
   89 IETYP=0 
      CALL EXEC(24,14,IETYP)
   82 IF(ITEMP)91,92,91 
   91 IETYP=ITEMP 
      GO TO 70
   92 CALL EXEC(24,10,1,IFNAM,ISTAT,1,ISTAT,IETYP)
      IF(IETYP)70,88,70 
   88 WRITE(NTYP,511)ISTAT(6),ISTAT(10) 
   70 CALL EXEC(24,3,IFNAM(4),0,0,IERR) 
      GO TO 17
C 
CDIRECTIVE /STA,DF,FNAME,PAKNO
C          /STA,FO,FNAME
C          /STA,SC,FNAME,PAKNO,SCODE
C          /STA,LR,FNAME,PAKNO
C          /STA,LF,PAKNO
C          /STA,NF,PAKNO,STATB
C          /STA,AP
C 
   11 CALL FNAME(IDIR,N3,N1,N2,IFNAM,IETYP,JATOE) 
      IF(IETYP)17,300,17
  300 DO 303 I=1,7
      IF(NEMTA(I)-IFNAM(1))303,302,303
  302 IFSTA=I 
      GO TO 93
  303 CONTINUE
      IETYP=23
      GO TO 17
   93 GO TO(94,94,94,94,290,95,900)IFSTA
   95 CALL PKNUM(IDIR,N3,N1,N2,IPAKN,IETYP) 
      CALL INTR(IDIR,N3,N1,N2,ISTAT,IETYP)
   97 IF(IETYP)17,355,17
  355 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,98,17 
   98 CALL EXEC(24,10,IFSTA,IFNAM,IPAKN,IRCDN,ISTAT,IETYP)
      GO TO 17
   94 CALL FNAME(IDIR,N3,N1,N2,IFNAM,IETYP,JATOE) 
      GO TO(290,97,290,290,290,290,290)IFSTA
  290 CALL PKNUM(IDIR,N3,N1,N2,IPAKN,IETYP) 
      IF(IFSTA-3)97,99,97 
   99 CALL INTR(IDIR,N3,N1,N2,ISTAT(2),IETYP) 
      GO TO 97
  900 CALL INTR(IDIR,N3,N1,N2,IFNAM,IETYP)
      CALL INTR(IDIR,N3,N1,N2,ISTAT,IETYP)
      GO TO 97
C 
CDIRECTIVE /REP,PAKNO 
C 
   12 CALL PKNUM(IDIR,N3,N1,N2,IPAKN,IETYP) 
      IF(IETYP)17,356,17
  356 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,102,17
  102 CALL EXEC(24,11,IPAKN,IETYP)
      GO TO 17
C 
CDIRECTIVE /COP,FNAME,PAKNO 
C 
   13 CALL FNAME(IDIR,N3,N1,N2,IFNAM,IETYP,JATOE) 
      CALL PKNUM(IDIR,N3,N1,N2,IPAKN,IETYP) 
      IF(IETYP)17,357,17
  357 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,103,17
  103 CALL EXEC(24,12,IFNAM,IPAKN,IETYP)
      GO TO 17
C 
CDIRECTIVE /CHA,FNAM1,FNAM2,PAKNO,SCODE 
C 
   14 CALL FNAME(IDIR,N3,N1,N2,IFNAM,IETYP,JATOE) 
      CALL FNAME(IDIR,N3,N1,N2,IFNAM(4),IETYP,JATOE)
      CALL PKNUM(IDIR,N3,N1,N2,IPAKN,IETYP) 
      CALL INTR(IDIR,N3,N1,N2,ISCOD,IETYP)
      IF(IETYP)17,358,17
  358 IETYP=-1
      CALL INTR(IDIR,N3,N1,N2,IUSTA,IETYP)
      IF(IETYP)17,116,17
  116 CALL EXEC(24,13,IFNAM,IPAKN,ISCOD,IETYP)
      GO TO 17
C 
CDIRECTIVE /POS 
C 
   15 CALL EXEC(24,14,IETYP)
      GO TO 17
C 
C INITIALIZE MESSAGE
C 
  850 WRITE(NWRIT,851)IPAKN(1)
  851 FORMAT(" PACK# "I6" INITIALIZED") 
      GO TO 5 
C 
C 
C CREATE MESSAGE
C 
  200 WRITE(NWRIT,515)(IFNAM(I),I=1,3)
  515 FORMAT(" FILE  "3A2," CREATED") 
      IF(IPAKN)220,221,222
  220 WRITE(NWRIT,516)
  516 FORMAT(" THE FILE IS ON AN AVAILABLE PACK") 
      GO TO 223 
  221 WRITE(NWRIT,517)
  517 FORMAT(" THE FILE IS TEMPORARY IN WORK AREA") 
      ISCOD(1)=0
      GO TO 223 
  222 WRITE(NWRIT,518)IPAKN(1)
  518 FORMAT(" THE FILE IS ON PACK# "I6)
  223 WRITE(NWRIT,519)IFLGT 
  519 FORMAT(" THE FILE LENGTH IS"I6," RECORDS")
      WRITE(NWRIT,520)IRLGT 
  520 FORMAT(" THE RECORD LENGTH IS"I6," WORDS")
      WRITE(NWRIT,521)ISCOD(1)
  521 FORMAT(" THE SECURITY CODE IS"I6) 
      WRITE(NWRIT,522)IUSTA 
  522 FORMAT(" THE USER STATUS WORD IS"I6)
      GO TO 5 
C 
C DESTROY MESSAGE 
C 
  201 WRITE(NWRIT,523)(IFNAM(I),I=1,3)
  523 FORMAT(" FILE  "2A2,A1," DESTROYED")
      GO TO 5 
C 
C OPEN MESSAGE
C 
  202 WRITE(NWRIT,524)(IFNAM(I),I=1,3)
  524 FORMAT(" FILE  "2A2,A1," OPENED") 
      IF(IPAKN)228,229,230
  228 WRITE(NWRIT,516)
      GO TO 231 
  229 WRITE(NWRIT,517)
      GO TO 231 
  230 WRITE(NWRIT,518)IPAKN(1)
      GO TO 231 
  231 WRITE(NWRIT,525)IRCDN 
  525 FORMAT(" THE RECORD # IS"I6)
      WRITE(NWRIT,521)ISCOD(1)
      GO TO 5 
C 
C CLOSE MESSAGE 
C 
  203 WRITE(NWRIT,527)(IFNAM(I),I=1,3)
  527 FORMAT(" FILE  "2A2,A1," CLOSED") 
      WRITE(NWRIT,522)IUSTA 
      GO TO 5 
C 
C BRIEF MESSAGE 
C 
  204 GO TO 5 
C 
C 
C STATUS MESSAGE
C 
  205 GO TO(232,232,232,232,661,232,238)IFSTA 
  232 WRITE(NWRIT,528)(IFNAM(I),I=1,3)
  528 FORMAT(" FILE  "2A2,A1," STATUS") 
      GO TO(237,660,237,237,661,237,238)IFSTA 
  660 IF(ISTAT(2))239,239,245 
  661 IF(IPAKN)662,663,664
  662 WRITE(NWRIT,665)ISTAT(1)
  665 FORMAT(" FOR PACK # "I6)
      GO TO 236 
  663 WRITE(NWRIT,666)
  666 FORMAT(" FOR WORK AREA")
      GO TO 236 
  664 WRITE(NWRIT,665)IPAKN(1)
      GO TO 236 
  237 IF(IPAKN)239,240,241
  239 WRITE(NWRIT,518)ISTAT(1)
      GO TO 242 
  240 WRITE(NWRIT,517)
      GO TO 242 
  241 WRITE(NWRIT,518)IPAKN(1)
  242 GO TO(233,244,235,236,236,243)IFSTA 
C 
C 
233   WRITE(NWRIT,530)ISTAT(5)
530   FORMAT(" RELATIVE STARTING SECTOR # IS ",I6)
      WRITE(NWRIT,519)ISTAT(6)
      WRITE(NWRIT,520)ISTAT(7)
      WRITE(NWRIT,522)ISTAT(9)
      WRITE(NWRIT,534)ISTAT(10) 
  534 FORMAT(" HIGHEST RECORD # ACCESSED IS "I6)
      GO TO 5 
C 
C 
  244 WRITE(NWRIT,535)
  535 FORMAT(" FILE IS OPEN") 
      GO TO 5 
  245 WRITE(NWRIT,536)
  536 FORMAT(" FILE IS NOT OPEN") 
      GO TO 5 
C 
C 
  235 WRITE(NWRIT,521)ISTAT(2)
      IF(ISTAT(3))246,246,247 
  246 WRITE(NWRIT,537)
  537 FORMAT(" CODE CHECKS")
      GO TO 5 
  247 WRITE(NWRIT,538)
  538 FORMAT(" CODE DOES NOT CHECK")
      GO TO 5 
C 
C 
  236 WRITE(NWRIT,539)ISTAT(2)
  539 FORMAT(" # OF AVAILABLE SECTORS IS "I6) 
      GO TO 5 
C 
C 
  243 WRITE(NWRIT,540)ISTAT(1)
  540 FORMAT(" FILE # "I6" IN THE DIRECTORY") 
      GO TO 5 
C 
C 
  238 IF (IFNAM)250,541,250 
  541 WRITE(NWRIT,248)IPAKN(1)
  248 FORMAT(" PACK# "I6" IS AVAILABLE AND INITIALIZED")
      GO TO 5 
  250 WRITE(NWRIT,860)IPAKN(1)
  860 FORMAT(" PACK# "I6" IS AVAILABLE BUT NOT INITIALIZED")
      GO TO 5 
C 
C REPACK MESSAGE
C 
  206 IF(IPAKN)251,5,253
  251 WRITE(NWRIT,542)
  542 FORMAT(" ALL PACKS AVAILABLE REPACKED") 
      GO TO 5 
  253 WRITE(NWRIT,543)IPAKN(1)
  543 FORMAT(" PACK "I6" REPACKED") 
      GO TO 5 
C 
C COPY MESSAGE
C 
  207 WRITE(NWRIT,544)(IFNAM(I),I=1,3)
  544 FORMAT(" FILE  "3A2" COPIED") 
      IF(IPAKN(1))257,258,259 
  257 IPAKN(1)=-IPAKN(1)
      GO TO 259 
  258 WRITE(NWRIT,517)
      GO TO 5 
  259 WRITE(NWRIT,518)IPAKN(1)
      GO TO 5 
C 
C CHANGE FILE NAME MESSAGE
C 
  208 WRITE(NWRIT,546)(IFNAM(I),I=1,3)
  546 FORMAT(" FILE  "2A2,A1," OLD FILE") 
      WRITE(NWRIT,547)(IFNAM(I),I=4,6)
  547 FORMAT(" FILE  "2A2,A1," NEW FILE") 
      IF(IPAKN(1))260,261,262 
  260 WRITE(NWRIT,516)
                                                                                                                                                                                                                                                