Parent Directory
|
Revision Log
|
Revision Graph
Importing ATLSIM initial version
*
* $Id: agdocrd.age,v 1.1.1.1 1998/06/23 14:32:57 cjonions Exp $
*
* $Name: $
*
* ---------------------------------------------------------
#include <commons/config.h>
**********************************************************************
* *
Function A g D O C R D (Link,Cf,Ckey, N,ioff,L)
* *
* Description: get a record with the Ckey content in the Ctype field *
* Ckey may be a record type or a content of a DD record *
* Output: N - record number if found, else number of scanned records *
* id - offset of the record in bank, IQ(link+id+1) first word *
* of [3*16+2,'cf',i1,i2,L*16+5,'text data (1-L)'] *
**********************************************************************
#include "commons/typing.inc"
#include "geant321/gcbank.inc"
#include "geant321/gcunit.inc"
character Cf*(*),Ckey*(*), C*5/'GLSUD'/;
Integer AgDOCRD,LENOCC,Link,ioff,N,L,id,if,
key(10),Lk,Lt,id1,id2,NW,I,J,IW;
Integer mask(9)/1,1024,16384,8192,9216,10240,15361,19456,17410/;
Character*2 ask (9)/'..','au','ve','nd','nl','ns','up','io','dd'/;
{N,ioff,L,Lk}=-1; " check bank format " AgDocRd =-1;
Lt=20; do i=1,5 { Lt+=IQ(Link+10+i); };
Unless (IQ(Link+3)==20 & IQ(Link+2)==Lt & IQ(Link-1)>=Lt) go to :E:;
Id1=20; if=1; " decode request Cf " AgDocRd =-2;
do id=1,8 { If (Cf(1:2)=ask(id)) goto :F:; };
Lk=LENOCC(Ckey); Call UCTOH(Ckey,key,4,min(Lk,40)); Lk=(Lk+3)/4;
do if=1,5 { if (Cf(1:1)=C(if:if)) goto :F:; Id1+=IQ(Link+10+if); }
goto :E:;
:F: Ioff=id1; id2=0; N=0; Nw=IQ(Link+10+if);
:N: while id2<NW
{ Ioff=Id1+Id2; J=Link+Ioff; N+=1; " check record format" AgDocRd =-3;
If (IQ(J+1)#50) Break; L=0; Id2+=4;
Iw=IQ(J+5); IF (Mod(Iw,16)=5) { L=Iw/16; Id2+=1+L; }
IF (IQ(J+2)#Mask(Id) | Lk>L) Next :N:;
Do i=1,Lk { If (IQ(J+i+5)#Key(i)) Next :N:; } AgDocRd = 0;
goto :E:;
:L:} AgDocRd = 1;
:E:"<w>AgDOCRD,Cf,Ckey,N,ioff,L;(' AgDocRd=',i2,' at ',a,1x,a,' N,of,L=',3i6)";
END;
| CERN Central CVS service | ViewVC Help |
| Powered by ViewVC 1.0.9 |