*
* $Id: dzdoco.F,v 1.1.1.1 1996/03/04 16:13:18 mclareni Exp $
*
* $Log: dzdoco.F,v $
* Revision 1.1.1.1 1996/03/04 16:13:18 mclareni
* Dzdoc/Zebpack
*
*
#include "dzdoc/pilot.h"
SUBROUTINE DZDOCO(LUNBNK,CHBANK,CHOPT)
************************************************************************
*. *
*...DZDOCO outputs bank descriptor information in different forms *
*. *
*. DZDOCO uses the bank description system bank to provide *
*. printed information about one or more banks in a store in several *
*. user chosen formats. *
*. *
*. SUBROUTINE DZDOCO(LUNBNK,CHBANK,CHOPT) *
*. *
*. INPUT: *
*. ------ *
*. LUNBNK : Unit number of file where the bank descriptor has *
*. to be written. *
*. LUNBNK = 0 means the standard output unit LUNOUT *
*. CHBANK : Character variable containing the name of the bank to *
*. be documented. *
*. CHOPT : Character variable containing the options desired *
*. 'A' : All banks in the given store (CHBANK not used) *
*. 'O' : List all old cycles *
*. 'P' : Printer file (80 colums wide) -- Default *
*. 'R' : Read information from RZ file on CWD *
*. 'S' : SGML tagged output
*. 'H' : highlight headline SGML
*. 'L' : highlight headline Latex
*. 'N' : dont write headline
*. 'I' : Input format for DZDOCM
*. *
*. BANKS R : QBKD,QBKM *
*. CALLS : DZDENT,DZDGEN,MZCHLS,RZIN,ZBINSR *
*. CALLED : User called (DZMAIN) *
*. COMMON : DZDOCC,DZDTAP,MZCN *
*. *
*. AUTHOR : M. Goossens DD/US *
*. VERSION : 2.04(35) / 1 Dec 1987 *
*. *
*.**********************************************************************
CHARACTER CHBANK*(*),CHOPT*(*)
INTEGER KEYVEC(2)
CHARACTER*8 CHKEYI
PARAMETER (NCHDES=60)
CHARACTER*(NCHDES) CHDESC
CHARACTER*3 CMONTH(12)
LOGICAL LWILDC
#if defined(CERNLIB_BSLASH)
#include "dzdoc/bslash2.inc"
#endif
#if !defined(CERNLIB_BSLASH)
#include "dzdoc/bslash1.inc"
#endif
#include "dzdoc/bkwrp.inc"
#include "dzdoc/tapes.inc"
* From DZEBRA
#include "zebra/zbcdk.inc"
#include "dzdoc/linout.inc"
#include "dzdoc/docparq.inc"
#include "dzdoc/bknuparq.inc"
#include "zebra/bkfoparq.inc"
#include "dzdoc/bkstparq.inc"
#include "dzdoc/bktgparq.inc"
#include "dzdoc/bktgdatq.inc"
DATA CMONTH/'Jan','Feb','Mar','Apr','May','Jun',
+ 'Jul','Aug','Sep','Oct','Nov','Dec'/
*------
10 CONTINUE
* CALL DZSHOW('After bank parsing',0,LDQBKD,'BLV',0,0,0,0)
*-- Define which options are desired
CALL DZDSCO(CHOPT,IFLOPT)
IF (IFLOPT(MPOSSQ).NE.0) THEN
IFLOPT(MPOSPQ) = 0
ENDIF
* IF (IFLOPT(MPOSGQ).NE.0) THEN
* X '' Sorry I stop here'')')
* GO TO 999
* ENDIF
*-- Which output unit is desired
IF(IFLOPT(MPOSGQ) .EQ. 0)THEN
IF (LUNBNK.EQ.0) THEN
LUNUSR = LUNOUT
ELSE
LUNUSR = LUNBNK
ENDIF
ENDIF
NLISTD = 0
*---OTTO--- Cant currently use 'R' option with 'A'
IF ( IFLOPT(MPOSAQ).NE.0
+ .AND.IFLOPT(MPOSRQ).EQ.0 ) THEN
IF (LDQBKD.EQ.0) THEN
WRITE(LUNOUT,'(''0DZDOCO No bank descriptor data structure'',
+ /,'' Sorry I stop here'')')
GO TO 999
ENDIF
*-- Order the linear chain of bank descriptors
CALL ZSORTH(0,LDQBKD,MBIDHQ)
*-- All known identifiers desired
LQBKD = LDQBKD
20 IF (LQBKD.EQ.0) GO TO 999
*-- Loop over all bank identifiers
CALL MZCHLS(0,LQBKD)
IF (IQFOUL.NE.0) THEN
*-- Invalid bank descriptor bank
WRITE(LUNOUT,
+ '(''0DZDOCO -- Documentation bank at address'',I10,
+ '' invalid'')') LQBKD
ELSE
WRITE(LUNUSR,'(40('' *''))')
*-- Treat the general information
CALL DZDGEN
*-- Output the link, status bit and data information
CALL DZDENT
ENDIF
LQBKD = LQ(KQSP+LQBKD)
*-- LOOP ===================================================
GO TO 20
*-- LOOP ===================================================
ELSE
*-- One particular bank descriptor desired
CALL UCTOH(CHBANK,IDBK,4,4)
IF (IFLOPT(MPOSRQ).EQ.0) GOTO 45
*-- Read information in CWD on RZ file
*-- --OTTO---- get name of up-bank
LWILDC = .FALSE.
IF(IFLOPT(MPOSAQ) .EQ. 0)THEN
KEYVEC(1) = IDBK
NCHA = LEN(CHBANK)
*-- wildcard ??
IF(INDEX(CHBANK,'*') .NE. 0)THEN
CHKEYI(1:4) = CHBANK(1:4)
LWILDC = .TRUE.
ENDIF
*-- if only one word there force wildcard for second
IF(NCHA .GE. 8)THEN
CHKEYI(5:8) = CHBANK(5:8)
CALL UCTOH(CHBANK(5:),KEYVEC(2),4,4)
ELSE
CHKEYI(1:4) = CHBANK(1:4)
CHKEYI(5:8) = '****'
LWILDC = .TRUE.
ENDIF
ELSE
*-- 'A'll option given => wildcard all
CHKEYI = '********'
LWILDC = .TRUE.
ENDIF
NFKEY = 0
*-- loop on wildcards
30 CONTINUE
IF(LWILDC)THEN
CALL DZDWCS(CHKEYI,KEYVEC,NFKEY)
IF(KEYVEC(1) .EQ. 0)GOTO 999
* IF(KEYVEC(1) .EQ. 0 .AND. NLISTD .GT. 0)GOTO 999
ENDIF
*--- if all cycles required, get number of cycles
ICYCLE = 1000000
IF(IFLOPT(MPOSOQ) .NE. 0)THEN
CALL RZIN(0,LDQBKD,2,KEYVEC,ICYCLE,'C')
LQBKD = LDQBKD
NCYCLE = IQUEST(50)
ICYCLE = 1
ELSE
NCYCLE = 0
ENDIF
*-- is graphics option required
IF(IFLOPT(MPOSGQ) .NE. 0)THEN
WRITE(LUNOUT,*)'Not implemtented',
+ ' use DZDGTR,DZDGTR instead'
* CALL DZDOCG(LUNBNK,KEYVEC,CHOPT)
IF(LWILDC) GOTO 30
ENDIF
*-- loop on cycles, if required
40 CONTINUE
CALL RZIN(0,LDQBKD,2,KEYVEC,ICYCLE,'D')
LQBKD = LDQBKD
ICYCLE = ICYCLE + 1
*-- if all cycles needed loop until all found
IF(NCYCLE .GT. 0 .AND. IQUEST(1) .NE. 0)THEN
GOTO 40
ENDIF
IF (IQUEST(1).NE.0) LQBKD = 0
NCYCLE = NCYCLE - 1
CALL RZDATE(IQUEST(14), IDATE, ITIME,1)
GOTO 46
45 CONTINUE
*-- Find the information in memory
IF (LDQBKD.EQ.0) THEN
WRITE(LUNOUT,'(''0DZDOCO No bank descriptor data '',
+ ''structure'',/,'' Sorry I stop here'')')
GO TO 999
ENDIF
LQBKD = LZFIND(0,LDQBKD,IDBK,MBIDHQ)
46 CONTINUE
* WRITE(LUNOUT,'(A,A4)')' DZDOCO for :',KEYVEC(1)
IF (LQBKD.EQ.0) THEN
*-- No bank present for bank identifier
IF(CHBANK(1:4).NE.'NOTU')THEN
WRITE(LUNUSR,'(A,A,A,A)')
+ ' '//CHBANK(1:4),'/',CHBANK(5:8),' No doc '
IF(LUNOUT.NE.LUNUSR)
+ WRITE(LUNOUT,'(A,A,A,A)')
+ ' '//CHBANK(1:4),'/',CHBANK(5:8),' No doc '
ENDIF
GO TO 999
ELSE
*-- Get address of documentation bank
CALL MZCHLS(0,LQBKD)
IF (IQFOUL.NE.0) THEN
WRITE(LUNOUT,
+ '(''0DZDOCO -- Documentation bank for identifier '',A,
+ '' invalid'')') CHBANK
ELSE
*--OTTO----
CALL UHTOC(KEYVEC,4,CHBANK,8)
IF(IFLOPT(MPOSBQ) .EQ. 0. AND.
& IFLOPT(MPOSIQ) .EQ. 0.)THEN
IF(IFLOPT(MPOSSQ) .EQ. 0)THEN
NCHOLL = (IQ(KQSP+LDQBKD+25)/16 - 1)*4
IF(NCHOLL .GT. 0)THEN
IF(NCHOLL .GT. NCHDES)NCHOLL = NCHDES
CALL UHTOC(IQ(KQSP+LDQBKD+27),
+ 4,CHDESC,NCHOLL)
IF(NCHOLL.LT.NCHDES)
+ CHDESC(NCHOLL+1:NCHDES) =' '
ELSE
CHDESC=' '
ENDIF
IF(IFLOPT(MPOSNQ).EQ.0)THEN
WRITE(LUNUSR,'(/,'' '',78(''-''))')
IF(IFLOPT(MPOSHQ).NE.0)THEN
WRITE(LUNUSR,'(A)')''
WRITE(LUNUSR,'(A)')'