C SUBROUTINE TO OPEN A TABLE C C Submitted by: C C R. N. Stillwell C Institute for Lipid Research C Baylor College of Medicine C Houston, Texas 77030 C C (who would be glad to receive comments, suggestions, bug fixes, etc., but C who promises no support whatever). C C Literature reference: C C R. N. Stillwell. A low-overhead laboratory data management system C for the PDP11. Comput. Biomed. Res., 15, 29-38(1982). C C Acknowledgement: C C This software was developed under National Institutes of Health grants C GM-13901 and GM-26611. C C General permission is hereby granted to copy, modify, or distribute this C program, but not for profit. Copyright to this software is and shall C remain in the public domain. C C CALL OPNTAB (NAME, NREC, LENREC, NCOLS, IERR) C C NAME BYTE ARRAY (NULL TERMINATED) CONTAINING TABLE NAME C NREC INTEGER RETURNS # OF RECORDS C LENREC INTEGER RETURNS LENGTH OF RECORD IN BYTES C NCOLS INTEGER RETURNS # OF COLUMNS C IERR LOGICAL RETURNS .TRUE. ON ERROR C SUBROUTINE OPNTAB(NAME,NREC,LENREC,NCOLS,IERR) C COMMON/TABX/HEAD1,HEAD2,IPTRH1,IPTRH2,IPTRD, 1 LEN,OFFSET,PREF,ZERO1,ZERO2 C BYTE HEAD1(1000),HEAD2(1000) INTEGER OFFSET BYTE PREF(6) !TABLE PREFIX CONTAINING '-' AND NULLS BYTE ZERO1(10),ZERO2(10)!ZERO-TH COLUMN HEADERS INTEGER LEN(40) !LENGTH OF COLUMN (I) INTEGER IPTRH1(41) !POINTER TO START OF HEAD1(I) INTEGER IPTRH2(41) !POINTER TO START OF HEAD2(I) INTEGER IPTRD(41) !POINTER TO START OF DATA FOR COL(I) C C COMMON/TITL/LENTL,TITLE,LENSTL,SUBTL C COMMON/IVAR/ IVAR C LOGICAL*1 IERR BYTE NAME(10),FILNAM(15) BYTE TITLE(80),SUBTL(80) INTEGER NCOLS DATA MAXREC /32766/ !NUMBER OF RECORDS FOR DEFINEFILE IERR = .FALSE. C SET UP FILENAME OF DESCRIPTOR FILE LTNAM = LENGTH(NAME) IF (LTNAM.GT.10.OR.LTNAM.LE.1) WRITE (5,5) 5 FORMAT (' INVALID TABLE NAME') IERR = .TRUE. RETURN FIN CALL MVSTR(FILNAM,NAME) CALL MVSTR(FILNAM(LTNAM),'.TAI;1') CALL ASSIGN(1,FILNAM) REWIND 1 READ (1) LENREC,NCOLS LENWDS = (LENREC+1)/2 CALL MVSTR(FILNAM(LTNAM),'.TAB;1') CALL ASSIGN(2,FILNAM) DEFINE FILE 2 (MAXREC,LENWDS,U,IVAR) D WRITE (5,9904) NREC,LENREC,NCOLS, IERR D9904 FORMAT (' NREC,LENREC,NCOLS,IERR',3I5,L3) IF (IERR) STOP C C READ INFORMATION FROM SEQUENTIAL FILE (.TAI) C READ (1) IPTRH1,IPTRH2 READ (1) L1TOT,(HEAD1(J),J=1,L1TOT) READ (1) L2TOT,(HEAD2(J),J=1,L2TOT) READ (1) LENTL,(TITLE(J),J=1,LENTL) READ (1) LENSTL,(SUBTL(J),J=1,LENSTL) READ (1) LEN,IPTRD READ (1) OFFSET,PREF READ (1) ZERO1,ZERO2 READ (1) NREC BACKSPACE 1 RETURN IF (.FALSE.) 50 IERR = .TRUE. FIN END