This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
unroll.c (copy_loop_body): splittable_regs[src_regno] with src_regno == -1 - BWAM !
- To: gcc at gcc dot gnu dot org
- Subject: unroll.c (copy_loop_body): splittable_regs[src_regno] with src_regno == -1 - BWAM !
- From: Toon Moene <toon at moene dot indiv dot nluug dot nl>
- Date: Sun, 26 Sep 1999 15:25:57 +0200
- Organization: Moene Computational Physics, Maartensdijk, The Netherlands
Detected with today's CVS contents, but might have been there longer (I
only came around today testing an abort with our NWP software - this
might or might not be the deeper cause).
Note the compiler options: -O1 -funroll-loops. Originally, all of this
code was compiled with -O2 -funroll-loops. The resulting executable
aborted due to an inconsistency detected by the program itself. This,
however, is a genuine compiler crash.
[toon@moene g77-bugs]$ gdb
/usr/snp/lib/gcc-lib/i686-pc-linux-gnu/2.96/f771
GNU gdb 19990816
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for
details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) run DATNUM.f -quiet -dumpbase DATNUM.f -O1 -version -fversion
-funroll-loops -o DATNUM.s
Starting program: /usr/snp/lib/gcc-lib/i686-pc-linux-gnu/2.96/f771
DATNUM.f -quiet -dumpbase DATNUM.f -O1 -version -fversion -funroll-loops
-o DATNUM.s
GNU F77 version 2.96 19990926 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 2.96 19990926 (experimental).
GNU Fortran Front End version 0.5.25 19990926 (experimental)
Program received signal SIGSEGV, Segmentation fault.
0x817c580 in copy_loop_body (copy_start=0x842afc0, copy_end=0x842b0ac,
map=0xbfff5fc8, exit_label=0x849941c, last_iteration=0,
unroll_type=UNROLL_MODULO, start_label=0x842aff8,
loop_end=0x842bac4, insert_before=0x842b104, copy_notes_from=0x842b104)
at ../../egcs/gcc/unroll.c:1885
1885 splittable_regs[regno]
(gdb) p regno
No symbol "regno" in current context.
(gdb) list
1880 /* If non-reduced/final-value givs were split,
then
1881 this would have to remap those givs also.
See
1882 find_splittable_regs. */
1883 #endif
1884
1885 splittable_regs[regno]
1886 = GEN_INT (INTVAL (giv_inc)
1887 + INTVAL
(splittable_regs[src_regno]));
1888 giv_inc = splittable_regs[regno];
1889
(gdb) p src_regno
$1 = -1
Looks no good. Here's the relevant Fortran source:
SUBROUTINE DATNUM(YPMODE,PLATN,PLATS,PLONW,PLONE,KOBS,KDAT,KSLDAT,
& PILATN,PILATS,PILONW,PILONE,LPINND,
> ALAT ,DLONM ,MSPTAB ,NLON ,NPATAB ,RPA ,NPA ,
> SUPPA ,NSUPPA ,WLONM )
I M P L I C I T
1 INTEGER(H),LOGICAL(L),CHARACTER*8 (Y)
DIMENSION ALAT(NLATM+1)
DIMENSION DLONM(NLATM+1)
DIMENSION MSPTAB(NLONMX+1,NLATM+1)
DIMENSION NLON(NLATM+1)
DIMENSION NPATAB(NLONMX+1,NLATM+1)
DIMENSION RPA(MCURRL+NPALNT)
DIMENSION SUPPA(NMXSPA)
DIMENSION WLONM(NLATM+1)
CHARACTER*(*) YPMODE
COMMON/COMRES/
I NLATM, NHLATM, NLONMX, NLP2, NMP1, NNP1,
I NKP1, NSP, NLEVM, NLVMP1, DLLAT2, DLLON2
C O M M O N/COFHDR/
1 NHEADR
2,NCFRLN ,NCFONM ,NCFMBN ,NCFOTP
3,NCFICT ,NCFLAT ,NCFLON ,NCFDAT
4,NCFSTM ,NCFETM
5,NCFSID( 2),NCFALT ,NCFOFL ,NCFKY1
6,NCFKY2 ,NCFNLV ,NCFOEC ,NCFST1
7,NCFST2 ,NCFST3 ,NCFST4 ,NCFDHM
8,NCFCHK ,NCFISP ,NCFSCH
1,NCFMHH ,NCFMSL ,NCFMRL ,NCFMAL
2,NCFMPP ,NCFMT2 ,NCFMTS ,NCFMTD
3,NCFMQ2 ,NCFMWS ,NCFMWD ,NCFMSD
4,NCFESC
C O M M O N/COFHDR/
1 NICDBP ,NICDOC ,NOCDBP ,NOCDOC
+,NCI4BP ,NCI4OC ,NCAPBP ,NCAPOC
+,NCBPBP ,NCBPOC
2,NONMBP ,NONMOC ,NBOXBP ,NBOXOC
3,NRBFBP ,NRBFOC ,NRFBPS( 5),NRFBOC
4,NRFIBP( 5),NRFIOC( 5)
5,NSTDBP ,NSTDOC ,NSNDBP ,NSNDOC
6,N2TDBP ,N2TDOC ,N2RDBP ,N2RDOC
7,NPREBP ,NPREOC
1,NMAWBP ,NMAWOC ,NHUMBP ,NHUMOC
2,NSSTBP ,NSSTOC ,NSNWBP ,NSNWOC
3,NT2MBP ,NT2MOC ,NR2MBP ,NR2MOC
+,NPRCBP ,NPRCOC ,NANYBP ,NANYOC
4,NRACBP( 1),NRACOC( 1),NRPSBP( 1),NRPSOC( 1)
5,NRRJBP( 1),NRRJOC( 1),NREVBP( 13, 1),NREVOC( 1)
C O M M O N/COFBDY/
1 NCFBLN ,NCFFLGLN
1,NCFVNM ,NCFPPP ,NCFPRL ,NCFPOB
+,NCFVAR ,NCFVOB
3,NCFFGS ,NCFOMF ,NCFOMA ,NCFOMI
4,NCFOF1 ,NCFOF2 ,NCFOF3
5,NCFOER ,NCFOBS ,NCFFGE ,NCFPER
6,NCFFLG( 2),NCFFL1( 2)
1,NFDBBP ,NFDBOC ,NPDBBP ,NVDBBP
2,NINLBP ,NCDPBP ,NLIDPT( 9)
3,NPDBOC ,NVDBOC ,NCFBPS( 7),NCFBOC( 7)
4,NINLOC ,NCDPOC ,NLIDPO
5,NDACBP ,NDACOC ,NDPSBP ,NDPSOC
6,NDRJBP ,NDRJOC ,NFGFBP ,NFGFOC
7,NDPFBP ,NDPFOC ,NFNFBP ,NFNFOC
8,NCHKBP ,NCHKOC ,NSOBBP ,NSOBOC
9,NDEVBP( 25),NDEVOC
+,NPPOBP ,NPPOOC ,NPFOBP ,NPFOOC
C O M M O N/COFBDY/
1 NPDBWO ,NINLWO ,NCDPWO ,NVDBWO
2,NDACWO ,NDPSWO ,NDRJWO ,NFGFWO
3,NDPFWO ,NFNFWO ,NCHKWO ,NSOBWO
4,NDEVWO
C O M M O N/OBCDTP/
1 NSYNOP ,NAIREP ,NSATOB ,NDRIBU
2,NTEMP ,NPILOT ,NSATEM ,NPAOB
1,NSRSCD ,NATSCD
2,NSHSCD ,NABSCD ,NSHRED ,NATSHS
3,NAIRCD ,NCODAR ,NCOLBA ,NAMDAR
&,NMBTMP ,NACARS ,NWINPR
4,NSTBCD ,NSST
5,NDRBCD ,NBATHY ,NTESAC ,NERS1W
6,NLDTCD ,NSHTCD ,NTDROP ,NROCOB
7, NROCSH
8,NLDPCD ,NSHPCD
9,NSTMCD ,NSTOVS
3,NPABCD
COMMON /COMSUP/
& NTYPSO , MTYPSO(20)
& , NSOMIN(20) , NSZMIN(20) , NSUMIN(20), NSVMIN(20) , NSFMIN(20)
& , NSRMIN(20)
& , NSATLV(4) , SATPRE(20,4) , SATREF(20,4)
COMMON /COMOBS/
& NTYPOB , NMXOBS , NMXDAT , N2MXDT , NMXDATO , NMXOBSO
& , NDCHCL , NMXDTC , NMXDRJ , NLDCST , NLFDCS , NLMATS
& , NMXSTO , NMXSPA , NMXSLA , NMXARL
& , ASATHC , BSATHC
& , NDVAR , MCODEZ , MCODEU , MCODEV , MCODEF
& , MCODHRS, MCODHSA, MCODHSY(5), NCODHSY
& , LSAVHO
& , NMXGRP , NMXELV , NMXEPT
& , NMXAGP , NMXALV , NMXAPT , MROWLE
& , NMXBOV , NMXREA
& , NPOIUF
COMMON /COMCRI/
& ANOVL , DSOVLMN , DSOVLMX , RATMXS
& , NSLABS , BDLSLA(8) , BDUSLA(8)
COMMON/COMPHY/
R RPI, RTWOPI, RPIO2, RDIANS, RDTODG,
R REARTH, OMEGA, G, RD, RV, RGOR,
R CPD, CPV, VTMPC1, VTMPC2,
R TMELT, C1ES, C2ES, C3LES,
R C3IES, C4LES, C4IES,
R RCONST, RSINAG, RCOSAG, RKELVN, RPSCAL,
R RYDAYS, RHRDAY, RMINHR, RHOUR, RHR03,
R CKAP, CSPN, CSPU, CSPS,
R CVROOTS, CVROOTD, CVROOTC,
R CQSNCR, WSMAX, WLMAX, CVLT
R,RLAPSE
R,RCIP, RLAMDA, RDT, RD1, RD2, RD3
R,RGAMA, VORMIN, VORMAX, EPSF
R,RCS, RCD , RCC , WCR, WPWP
C O M M O N/PAFORM/
1 NPAHDL
2,NPARLN ,NPAPNL ,NPAOBN ,NPAMBN
3,NPALAT ,NPALON ,NPAALT ,NPAOMA
4,NPASID( 2),NPAICT ,NPAOFL ,NPANDT
5,NPAECT ,NPASTS
1,NPRRBP ,NPRROC ,NNXRBP ,NNXROC
2,NOBTBP ,NOBTOC ,NECTBP ,NECTOC
3,NESCBP ,NESCOC
1,NPABDL ,NPAVAR ,NPAPRS ,NPANED
2,NPABD2( 2)
1,NPPPBP ,NPPPOC ,NPRLBP ,NPRLOC
3,NPNDBP ,NPNDOC ,NPNEBP ,NPNEOC
4,NSLDBP(4) ,NSLDOC(4)
C O M M O N/COMOBF/
1 NFDRAO(14), NDDRAO(17),
2 NMXLOB, NLNARR, NCOUNT, NLNCOF, NLNPMX, NPAGLB,
3 NLNCCF, NLNCPA, NLENPR, NPARRL, NPCOUN, NZCOUN,
4 NRHCOUN, MXLVOB, NLNRET, NPALNT, NCURRL, NANMOD,
5 NCDDRS, NMXDCL, NPDDRS, NMXDPL, NINLEN, NDQLEN,
6 NSLOT, MCURRL, MCOREC,
L LBFAOF
C O M M O N/NUMCON/
1 RMDI, NMDI
1,RMULTF( 3),RMULWF( 3),RMULGF( 3),DCRJLI( 3,0:2)
2,NOBITS ,RFACT ( 16),RMULHF( 3),RFGFAC( 12, 3)
4,NPFACT( 12),NZFACT( 12),NPFLFC( 12),NZFLFC( 12)
5,RPSET ( 12),RZSET ( 12)
6,NTMPLC ,NSATMC
7,NTNDMX ,RSTYLI(3) ,RSTYTD(3)
8,RDENST ,RWSNCL ,RWSNFA ,RMTOMM
9,RMSNCN ,RSNGR1 ,RSNGR2 ,RSNCRV
1,RSCHDP
C O M M O N/NMBRING/
1 NVAR ( 13),NVNUMB( 46),NVRPOE( 5),NOBNUM
1,NDZEX ( 8),NZEX ( 8),NUEX ( 8),NVEX ( 8)
2,NTEX ( 8),NTDEX ( 8),NQEX ( 8),NT2EX ( 8)
3,NTD2EX( 8),NSTEX ( 8),NPTEX ( 8),NPRLEX( 8)
4,NWWEX ( 3),NGCLEX( 6),NACLEX( 3),NGRNEX( 3)
5,NSPPEX( 2),NICEEX( 3),NRAINE( 3),NSHIPE( 2)
6,NWAVEE( 3)
1,NDZOT ( 8),NZOT ( 8),NUOT ( 8),NVOT ( 8)
2,NTOT ( 8),NTDOT ( 8),NQOT ( 8),NT2OT ( 8)
3,NTD2OT( 8),NSTOT ( 8),NPTOT ( 8),NRHOT ( 8)
4,NWWOT ( 3),NGCLOT( 6),NACLOT( 3),NGRNOT( 3)
5,NSPPOT( 2),NICEOT( 3),NRAINO( 3),NSHIPO( 2)
6,NWAVEO( 3),NCLOUT
5,NORESN ,NODREV ,NODDEV ,NRESON( 25)
6,NVRSEC( 4)
COMMON/COMIOD/
I NIN, NOUT, NSPECI, NG3I, NG3PI, NCLIMI
I,NLEGI, NLEGD, NAOF, NGPFG, NRETRV, NPAIO(7)
I,NCFIO, NGPAN, NSPECO, NG3O, NG3A, NDQF
I,NBLHFI, NBLHFO
I,NFWORK, NWRDIA, NAERR, NEVAER, NCLERR
I,NFCOUN, NFBTUN, NORZUN, NORUUN, NOSFUN
I,NACOUN, NMTTUN(4), NSUPUN, NOUTTA, NSAVOU
I,NMCSL5, NMCSL2, NMSTIO, NECSLI, NFDSIO(3)
DIMENSION KOBS(NSLABS),KDAT(NSLABS),KSLDAT(NSLABS),LPINND(NSLABS)
DIMENSION NPA(MCURRL+NPALNT)
DIMENSION NSUPPA(NMXSPA)
DIMENSION IDWOR2(2)
I15BIT(INVAR,IBIT15)=IAND(ISHFT(INVAR,(1-IBIT15)*15),2**15-1)
I6BIT(INVAR,IBIT6)=IAND(ISHFT(INVAR,(1-IBIT6)*6),2**6-1)
IBITS (INVAR,IPOS,ICOVR)=IAND(ISHFT(INVAR,-IPOS),ICOVR)
INSERT(INVAR,INVAL,NBIT)=IOR(INVAR,ISHFT(INVAL,NBIT))
ICHBPT(IVAR,IBP,IBO)=IAND(IVAR,
& IOR(ISHFT(NOT(0),IBP+IBO),
& NOT(ISHFT(NOT(0),IBP))))
NBITS(NBIT)=NOT(ISHFT(NOT(0),NBIT))
SWVPRS(T) =EXP(1.809851 + 17.27 * T / (T + 237.3))
RELHUM(T,TD) =SWVPRS(TD) / SWVPRS(T) * 100.
IPSSDP(DP) =MAX(0,MIN(32767,IFIX((DP+16.)*1024.)))
IPSSSN(SN) =MAX(0,MIN(32767,IFIX((SN+350.)*32.)))
IPSSER(ER) =MAX(0,MIN(32767,INT ( ER*1024.+0.5 )))
IPSSES(PES) =MAX(0,MIN(32767,INT(PES*16384.+0.5 )))
LOOACT(K)= IBITS( K , NRACBP(1) , NBITS(NRACOC(1)) ) .EQ. 1
LOOPAS(K)= IBITS( K , NRPSBP(1) , NBITS(NRPSOC(1)) ) .EQ. 1
LOOREJ(K)= IBITS( K , NRRJBP(1) , NBITS(NRRJOC(1)) ) .EQ. 1
LOOSAC(K)= LOOACT(K) .AND. .NOT.LOOPAS(K) .AND. .NOT.LOOREJ(K)
LODACT(K)= IBITS( K , NDACBP , NBITS(NDACOC) ) .EQ. 1
LODPAS(K)= IBITS( K , NDPSBP , NBITS(NDPSOC) ) .EQ. 1
LODREJ(K)= IBITS( K , NDRJBP , NBITS(NDRJOC) ) .EQ. 1
LODSOB(K)= IBITS( K , NSOBBP , NBITS(NSOBOC) ) .EQ. 1
LODCHK(K)= IBITS( K , NCHKBP , NBITS(NCHKOC) ) .EQ. 1
LODOVR(K)= IBITS( K , NVDBBP+NF1BPS(3) , NBITS(NF1BOC(3)) ) .EQ. 1
SOBDEV(K)= IBITS( K , NPNDBP , NBITS(NPNDOC ) ) / 1024. - 16.
SOBDSN(K)= ((IBITS( K ,NPNDBP ,NBITS(NPNDOC))/32.)-350.)
SOBERR(K)= IBITS( K , NPNEBP , NBITS(NPNEOC ) ) / 1024.
SERRSC(K)= IBITS( K , NESCBP , NBITS(NESCOC ) ) / 16384.
SOBPR(K)=IBITS(K,NPPPBP,NBITS(NPPPOC))*RFACT(NVAR(1))
SOLTH(K)=IBITS(K,NPRLBP,NBITS(NPRLOC))*RFACT(NVAR(1))
INSLDT(K,KSL)=IBITS( K , NSLDBP(KSL+1) , NBITS(NSLDOC(KSL+1)) )
110 CONTINUE
ITYPE=1
200 CONTINUE
IFSTLT=IFIX((ALAT(1)-PLATN)*NLATM/(ALAT(1)-ALAT(NLATM)))+1
ILSTLT=IFIX((ALAT(1)-PLATS)*NLATM/(ALAT(1)-ALAT(NLATM)))+3
IFSTLT=MIN(MAX(IFSTLT,2),NLATM)
ILSTLT=MIN(MAX(ILSTLT,2),NLATM)
ZCELAT=0.5*(PLATN+PLATS)
DO 2010 J=2,NLATM
IF(ABS(ALAT(J)-ZCELAT).GT.ABS(ALAT(J-1)-ZCELAT))THEN
IMDLRW=J-1
GOTO 2011
ENDIF
2010 CONTINUE
IMDLRW=NLATM
2011 CONTINUE
IF(PLONE .LT. PLONW) THEN
ILONW=1
ILONE=NLONMX+1
ELSE
ILONW=IFIX((PLONW-WLONM(IMDLRW))/DLONM(IMDLRW))+1
ILONE=IFIX((PLONE-WLONM(IMDLRW))/DLONM(IMDLRW))+3
ILONW=MAX(MIN(ILONW,NLON(IMDLRW)),2)
ILONE=MAX(MIN(ILONE,NLON(IMDLRW)),2)
ENDIF
210 CONTINUE
DO 212 JSL=1,NSLABS
KDAT(JSL)=0
KOBS(JSL)=0
LPINND(JSL)=.FALSE.
212 CONTINUE
220 CONTINUE
LOSUPO=.FALSE.
230 CONTINUE
IF(YPMODE.EQ.'ANALYS' .OR. YPMODE.EQ.'HUMAN')
& THEN
LOANAL=.TRUE.
ELSE
LOANAL=.FALSE.
ENDIF
ZLONW=PLONW
ZLONE=PLONE
ZILONW=PILONW
ZILONE=PILONE
IF(ZILONW.GE.180.) ZILONW=ZILONW-360.
IF(ZILONE.GE.180.) ZILONE=ZILONE-360.
IF(ZLONW.GE.180.) ZLONW=ZLONW-360.
IF(ZLONE.GE.180.) ZLONE=ZLONE-360.
ZCELON=0.5*(ZILONW+ZILONE)
300 CONTINUE
DO 390 JLAT=IFSTLT,ILSTLT
310 CONTINUE
IF(LOSUPO)THEN
IP=MSPTAB(ILONW,JLAT)-1
IPLST=MSPTAB(ILONE,JLAT)-1
ELSE
IP=NPATAB(ILONW,JLAT)-1
IPLST=NPATAB(ILONE,JLAT)-1
ENDIF
IF(IP .GE. IPLST) GOTO 390
320 CONTINUE
IF(LOSUPO)THEN
ZOBLAT=SUPPA(IP+NPALAT)
ZOBLON=SUPPA(IP+NPALON)
ELSE
ZOBLAT=RPA (IP+NPALAT)
ZOBLON=RPA (IP+NPALON)
ENDIF
LOTHOB=.FALSE.
ZEPS = 1.0E-5 ! Note: dependent on REAL a 32-bit quantity.
IF(ZOBLAT.LE.(PLATN + ZEPS) .AND. ZOBLAT.GT.(PLATS - ZEPS))
& THEN
IF(ZLONW.LT.ZLONE)
& THEN
IF(ZOBLON.GE.(ZLONW - ZEPS) .AND. ZOBLON.LT.(ZLONE + ZEPS))
& LOTHOB=.TRUE.
ELSE
IF(ZOBLON.GE.(ZLONW - ZEPS) .OR. ZOBLON.LT.(ZLONE + ZEPS))
& LOTHOB=.TRUE.
ENDIF
ENDIF
IF(.NOT.LOTHOB) GO TO 370
322 CONTINUE
LOINNO=.FALSE.
IF(.NOT.LOANAL .AND. .NOT. LOSUPO)
&THEN
IF(ZOBLAT.LE.PILATN .AND. ZOBLAT.GT.PILATS)
& THEN
IF(ZILONW.LT.ZILONE)
& THEN
IF(ZOBLON.GE.ZILONW .AND. ZOBLON.LT.ZILONE)
& LOINNO=.TRUE.
ELSE
IF(ZOBLON.GE.ZILONW .OR. ZOBLON.LT.ZILONE)
& LOINNO=.TRUE.
ENDIF
ENDIF
ENDIF
330 CONTINUE
IF(LOSUPO)THEN
I1=NSUPPA(IP+NPAOFL)
I2=NSUPPA(IP+NPAICT)
ELSE
I1=NPA (IP+NPAOFL)
I2=NPA (IP+NPAICT)
ENDIF
IF(LOOREJ(I1) .AND. .NOT. LOOPAS(I1) ) GOTO 370
IOBTYP=IBITS( I2 , NOBTBP , NBITS(NOBTOC) )
LOSING=.FALSE.
IF(YPMODE.EQ.'ANALYS' .AND. ( IOBTYP.EQ.0 .OR.
& IOBTYP.EQ.NSYNOP .OR. IOBTYP.EQ.NDRIBU .OR.
& IOBTYP.EQ.NPAOB )
& ) LOSING=.TRUE.
DO 331 JSL=1,NSLABS
KSLDAT(JSL)=0
331 CONTINUE
IF(LOSUPO)THEN
I1=NSUPPA(IP+NPANDT)
ELSE
I1=NPA (IP+NPANDT)
ENDIF
DO 333 JDAT=1,INSLDT( I1 , 0 )
IF(LOSUPO)THEN
IDWORP=NSUPPA(IP+NPAHDL + (JDAT-1)*NPABDL + NPAPRS)
IDWORV=NSUPPA(IP+NPAHDL + (JDAT-1)*NPABDL + NPAVAR)
IDWOR2(1)=NSUPPA(IP+NPAHDL + (JDAT-1)*NPABDL+NPABD2(1))
IDWOR2(2)=NSUPPA(IP+NPAHDL + (JDAT-1)*NPABDL+NPABD2(2))
ELSE
IDWORP=NPA (IP+NPAHDL + (JDAT-1)*NPABDL + NPAPRS)
IDWORV=NPA (IP+NPAHDL + (JDAT-1)*NPABDL + NPAVAR)
IDWOR2(1)=NPA(IP+NPAHDL + (JDAT-1)*NPABDL + NPABD2(1))
IDWOR2(2)=NPA(IP+NPAHDL + (JDAT-1)*NPABDL + NPABD2(2))
ENDIF
ZPRESS=SOBPR(IDWORP)
IF(LODSOB(IDWOR2(NSOBWO))) GOTO 333
IF(LODREJ(IDWOR2(NDRJWO)))
& THEN
IF(LOANAL)
& THEN
GO TO 333
ELSE
IF(.NOT.LODPAS(IDWOR2(NDPSWO)) .AND. .NOT.
& LODACT(IDWOR2(NDACWO))) GO TO 333
ENDIF
ENDIF
DO 332 JSL=1,NSLABS
IF(ZPRESS.LT.BDUSLA(JSL) .OR. ZPRESS.GT.BDLSLA(JSL)) GO TO 332
KDAT(JSL)=KDAT(JSL)+1
KSLDAT(JSL)=KSLDAT(JSL)+1
IF( IDWORV .EQ. MCODEZ
& .AND. LOSING )
& THEN
KDAT(JSL)=KDAT(JSL)+1
KSLDAT(JSL)=KSLDAT(JSL)+1
ENDIF
IF(JSL.EQ.1 .AND. LOINNO) LPINND(JSL)=.TRUE.
IF(JSL.GT.1 .AND. LOINNO) THEN
IF(ZPRESS.LT.BDUSLA(JSL-1)) LPINND(JSL)=.TRUE.
ENDIF
332 CONTINUE
333 CONTINUE
DO 334 JSL=1,NSLABS
IF(KSLDAT(JSL).GT.0) KOBS(JSL)=KOBS(JSL)+1
334 CONTINUE
340 CONTINUE
IF(LOSUPO)THEN
INDTOT=INSLDT( NSUPPA(IP+NPANDT) , 0 )
NSUPPA(IP+NPANDT)=INDTOT
ELSE
INDTOT=INSLDT( NPA (IP+NPANDT) , 0 )
NPA (IP+NPANDT)=INDTOT
ENDIF
DO 341 JSL=1,NSLABS
IPACK=KSLDAT(JSL)
IF(IPACK.GE.NBITS(NSLDOC(JSL+1)))
& THEN
WRITE(NOUT,'('' ** NUMBER OF DATA IN SLAB TOO LARGE TO BE''
& '' PACKED IN DATNUM :'',I8)') IPACK
CALL ENDRUN
ELSE
IF(LOSUPO)THEN
NSUPPA(IP+NPANDT)=INSERT( NSUPPA(IP+NPANDT) ,
& IPACK , NSLDBP(JSL+1) )
ELSE
NPA (IP+NPANDT)=INSERT( NPA (IP+NPANDT) ,
& IPACK , NSLDBP(JSL+1) )
ENDIF
ENDIF
341 CONTINUE
370 CONTINUE
IF(LOSUPO)THEN
IP=IP+NSUPPA(IP+NPARLN)
ELSE
IP=IP+NPA (IP+NPARLN)
ENDIF
IF(IP .LT. IPLST) GOTO 320
390 CONTINUE
400 CONTINUE
IF(.NOT. LOSUPO) THEN
LOSUPO=.TRUE.
GOTO 300
ENDIF
RETURN
END
--
Toon Moene (toon@moene.indiv.nluug.nl)
Saturnushof 14, 3738 XG Maartensdijk, The Netherlands
Phone: +31 346 214290; Fax: +31 346 214286
GNU Fortran: http://gcc.gnu.org/onlinedocs/g77_news.html