anchor.diff:              ! filename?
               write(dtime,505) time
               datfile = trim(self%path)//'/'//trim(self%basename)//'_'//trim(dtime)//'_'//self%grid//'.dat'
  -            print *, ('[ingest_cm1::read3DMultStart]: Opening ',trim(datfile))
  +            call cm1log(self, LOG_MSG, 'read3DMultStart', 'Opening: '//trim(datfile))
   
               ! TODO: check if time is in times for vailidy
               !       Make sure file successfully opens!
  
positive.code:             self%n2d = self%n2d+1
           end if
        end do
        503 format(' [ingest_cm1::open_cm1]: ... Found ',i3,' variables')
        print 503,self%nv
  
        print *, ('[ingest_cm1::open_cm1]: Closing Grads control file',trim(dset))
  
        ! This determines the recl to pass to open()
        allocate(recltest(self%nx,self%ny))
        inquire(iolength=self%reclen) recltest
        deallocate(recltest)
        print *,'[ingest_cm1::open_cm1]: Using record length = ', self%reclen
  
        close(self%ctl_unit)
        read_ctl = 1
  
  
negative.code:       integer :: nf, si, sj, i, j
  
        if (.not. self%check_open('read3DXYSlice')) then
           call cm1log(self, LOG_ERROR, 'read3DXYSlice', 'No datasef open, aborting')
           read3DXYSlice = 0
           return
        end if
  