1
C @(#)updtl.for 19.1 (ES0-DMD) 02/25/03 13:25:40
2
C===========================================================================
3
C Copyright (C) 1995 European Southern Observatory (ESO)
5
C This program is free software; you can redistribute it and/or
6
C modify it under the terms of the GNU General Public License as
7
C published by the Free Software Foundation; either version 2 of
8
C the License, or (at your option) any later version.
10
C This program is distributed in the hope that it will be useful,
11
C but WITHOUT ANY WARRANTY; without even the implied warranty of
12
C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
C GNU General Public License for more details.
15
C You should have received a copy of the GNU General Public
16
C License along with this program; if not, write to the Free
17
C Software Foundation, Inc., 675 Massachusetss Ave, Cambridge,
20
C Corresponding concerning ESO-MIDAS should be addressed as follows:
21
C Internet e-mail: midas@eso.org
22
C Postal address: European Southern Observatory
23
C Data Management Division
24
C Karl-Schwarzschild-Strasse 2
25
C D 85748 Garching bei Muenchen
27
C===========================================================================
29
C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
33
C-----------------------------------------------------------------------
34
SUBROUTINE UPDTL( MCAT , NL , NN , M )
42
INTEGER MB , MCAT(4,NL) , MM3 , MR , MS
44
INTEGER MX3 , MX4 , MXX4
46
INTEGER MY3 , MY4 , MYY4
47
INTEGER NN , NNB , NXB
48
C REAL B1 , B2, BX1 , BX2 , BY1 , BY2
54
MS = M - MOD( M-1 , NL ) - 1
56
CALL STTPUT('*** FATAL: Internal buffer overflow; ',ISTAT)
58
+ (' Please, restrict search to smaller subframe',ISTAT)
60
+ (' or modify parameter setup fro detection',ISTAT)
72
C ****** Read neighbour parameters.
74
IF ( NN .GT. MS ) THEN
75
NNB = MOD( NN-1 , NL ) + 1
79
c READ ( ISF , REC=NN ) M1 , M2 , M3 , M4 , B1 , B2
83
C ****** Four out of five cases will be considered.
85
IF ( M3 . EQ. 0 .AND. MM3 .EQ. 0 ) THEN
87
C ****** Detection is single and neighbour is single.
93
ELSE IF ( M3 .EQ. 0 .AND. MM3 .NE. 0 ) THEN
95
C ****** Detection is multiple and neighbour is single.
97
IF ( MM3 .GT. MS ) THEN
98
NXB = MOD( MM3-1 , NL ) + 1
101
c READ ( ISF , REC=MM3 ) MX1 , MX2 , MX3 , MX4 , BX1 , BX2
106
IF ( MM3 .GT. MS ) THEN
107
MCAT( 4 , NXB ) = MX4
109
c WRITE ( ISF , REC=MM3 ) MX1, MX2, MX3, MX4, BX1, BX2
112
ELSE IF ( M3 .NE. 0 .AND. MM3 .EQ. 0 ) THEN
114
C ****** Detection is single, neighbour is multiple.
119
IF ( M4 .EQ. 0 ) THEN
124
IF ( MXX4 .GT. MS ) THEN
125
NXB = MOD ( MXX4-1 , NL ) + 1
127
c ELSE IF ( MXX4 .GT. 0 ) THEN
128
c READ ( ISF , REC=MXX4 ) MX1, MX2, MX3, MX4, BX1, BX2
130
IF ( MX4 .NE. 0 ) THEN
135
IF ( MXX4 .GT. MS ) THEN
136
NXB = MOD( MXX4-1 , NL ) + 1
138
c ELSE IF ( MXX4 .GT. 0 ) THEN
139
c WRITE ( ISF , REC=MXX4 ) MX1, MX2, MX3, MX4, BX1, BX2
141
ELSE IF ( M3 .NE. 0 .AND. MM3 .NE. 0 .AND. M3 .NE. MM3 ) THEN
143
C ****** Detection is multiple, neighbour is multiple.
144
C ****** They belong to different objects.
147
IF ( MY3 .GT. MS ) THEN
148
NXB = MOD( MY3-1 , NL ) + 1
149
MY4 = MCAT( 4 , NXB )
151
c READ ( ISF , REC=MY3 ) MY1, MY2, MY3, MY4, BY1, BY2
155
IF ( MX3 .GT. MS ) THEN
156
NXB = MOD( MX3-1 , NL ) + 1
157
MX4 = MCAT( 4 , NXB )
159
c READ ( ISF , REC=MX3 ) MX1, MX2, MX3, MX4, BX1, BX2
163
IF ( MY3 . GT. MS ) THEN
164
NXB = MOD( MY3-1 , NL ) + 1
165
MCAT( 4 , NXB ) = MY4
167
c WRITE ( ISF , REC=MY3 ) MY1, MY2, MY3, MY4, BY1, BY2
169
IF ( MY4 .GT. MS ) THEN
170
NXB = MOD( MY4-1 , NL ) + 1
171
MCAT ( 3 , NXB ) = MX3
173
c WRITE ( ISF , REC=MY4 ) MX1, MX2, MX3, MX4, BX1, BX2
177
IF ( MXX4 .GT. MS ) THEN
178
NXB = MOD ( MXX4-1 , NL ) + 1
179
MX4 = MCAT( 4 , NXB )
180
c ELSE IF ( MXX4 .GT. 0 ) THEN
181
c READ ( ISF , REC=MXX4 ) MX1, MX2, MX3, MX4, BX1, BX2
183
IF ( MX4 .NE. 0 ) THEN
185
IF ( MXX4 .GT. MS ) THEN
186
NXB = MOD( MXX4-1 , NL ) + 1
187
MCAT( 3 , NXB ) = MX3
189
c READ ( ISF , REC=MXX4 ) MX1,MX2,MX3,MX4,BX1,BX2
196
IF ( MXX4 .GT. MS ) THEN
197
NXB = MOD( MXX4-1 , NL ) + 1
200
c ELSE IF ( MXX4 .GT. 0 ) THEN
201
c WRITE ( ISF , REC=MXX4 ) MX1, MX2, MX3, MX4, BX1, BX2
204
IF ( MR .EQ. 1 ) THEN
205
IF ( NN .GT. MS ) THEN
206
NXB = MOD( NN-1 , NL ) + 1
210
c WRITE ( ISF , REC=NN ) M1 , M2 , M3 , M4 , B1 , B2