Index: sic_parse_mod.f90
$ cvs diff sic_parse_mod.f90
===================================================================
RCS file: /CVS/GILDAS/gildas/kernel/lib/sic/sic_parse_mod.f90,v
retrieving revision 2.99
diff -r2.99 sic_parse_mod.f90
475,476c475,477
<   integer, parameter :: code_isnan    = 70   ! Symbol(NAME)
<   integer, parameter :: max_code_func = 70   ! Maximum code for a function
---
>   integer, parameter :: code_isnan    = 70   ! IsNaN(NAME)
>   integer, parameter :: code_isnum    = 71   ! IsNUM(String)
>   integer, parameter :: max_code_func = 71   ! Maximum code for a function
479c480
<   integer, parameter :: code_pyfunc   = 71   ! Function in python namespace
---
>   integer, parameter :: code_pyfunc   = 72   ! Function in python namespace
482c483
<   integer, parameter :: code_scalar   = 71   ! Vector defined function end here
---
>   integer, parameter :: code_scalar   = 72   ! Vector defined function end here
495c496
<     'LEN             ','LEN_TRIM        ','LOG             ','LOG10           ',  &
---
>     'ISNUM           ','LEN             ','LEN_TRIM        ','LOG             ','LOG10           ',  &


Index: codefunc.f90
$ cvs diff codefunc.f90
===================================================================
RCS file: /CVS/GILDAS/gildas/kernel/lib/sic/codefunc.f90,v
retrieving revision 1.60
diff -r1.60 codefunc.f90
93a94
>   func(code_isnum)    = locwrd(lsic_s_uplus)  ! Same
162a164
>   func(100+code_isnum)    = locwrd(lsic_d_uplus)  !
231a234
>   func(200+code_isnum)    = locwrd(lsic_i_uplus)  ! Same


Index: compute.f90
$ cvs diff compute.f90
===================================================================
RCS file: /CVS/GILDAS/gildas/kernel/lib/sic/compute.f90,v
retrieving revision 1.85
diff -r1.85 compute.f90
149a150
>         code.eq.code_isnum    .or.  &

Index: sic-interfaces-private.f90
$ cvs diff sic-interfaces-private.f90
===================================================================
RCS file: /CVS/GILDAS/gildas/kernel/lib/sic/sic-interfaces-private.f90,v
retrieving revision 1.310
diff -r1.310 sic-interfaces-private.f90
6407a6408,6425
>     subroutine read_operand_isnum(chain,nch,descr,error)
>       use gildas_def
>       use sic_interactions
>       use sic_dictionaries
>       use sic_types
>       use gbl_message
>       !---------------------------------------------------------------------
>       ! @ private
>       !  Find if a string is a number or scalar number variable...
>       !---------------------------------------------------------------------
>       character(len=*),       intent(in)  :: chain  ! Chain containing operand
>       integer(kind=4),        intent(in)  :: nch    ! Length of chain
>       type(sic_descriptor_t), intent(out) :: descr  ! Operand descriptor
>       logical,                intent(out) :: error  ! Logical error flag
>     end subroutine read_operand_isnum
>   end interface
>   !
>   interface
8181a8200,8215
>     subroutine compute_index(line,error)
>       use gildas_def
>       use sic_dictionaries
>       use sic_types
>       use gbl_message
>       use gbl_format
>       !---------------------------------------------------------------------
>       ! @ private
>       ! COMPUTE OutVar INDEX String Substring
>       !---------------------------------------------------------------------
>       character(len=*)                :: line   !
>       logical,          intent(inout) :: error  !
>     end subroutine compute_index
>   end interface
>   !
>   interface

Index: evaluate.f90
$ cvs diff evaluate.f90
===================================================================
RCS file: /CVS/GILDAS/gildas/kernel/lib/sic/evaluate.f90,v
retrieving revision 1.80
diff -r1.80 evaluate.f90
675a676
>        (code.ne.code_isnum)                  .and.  &
716a718
>           code.eq.code_isnum .or.  &
719c721
<     ! Just copy the result of the EXIST or FILE operation (YES or NO)
---
>     ! Just copy the result of the Logical test operation (YES or NO)


Index: intrinsic.f90
$ cvs diff intrinsic.f90
===================================================================
RCS file: /CVS/GILDAS/gildas/kernel/lib/sic/intrinsic.f90,v
retrieving revision 2.22
diff -r2.22 intrinsic.f90
179a180,182
>   case ('ISNUM')
>     i_code = code_isnum
>     nfunarg = 1
260a264,267
>   case (code_isnum)
>     call read_operand_isnum(chain,nch,descr,error)
>     funcode = code_nop
>     !
776a784,860
> !
> subroutine read_operand_isnum(chain,nch,descr,error)
>   use gildas_def
>   use sic_interactions
>   use sic_interfaces, except_this=>read_operand_isnum
>   use sic_dictionaries
>   use sic_types
>   use gbl_message
>   !---------------------------------------------------------------------
>   ! @ private
>   !  Find if a string is a number or scalar number variable...
>   !---------------------------------------------------------------------
>   character(len=*),       intent(in)  :: chain  ! Chain containing operand
>   integer(kind=4),        intent(in)  :: nch    ! Length of chain
>   type(sic_descriptor_t), intent(out) :: descr  ! Operand descriptor
>   logical,                intent(out) :: error  ! Logical error flag
>   ! Local
>   character(len=*), parameter :: rname='ISNUM'
>   logical :: found
>   integer(kind=4) :: nc, ier
>   type(sic_descriptor_t) :: idesc
>   real(8) :: dble
>   !
>   error = .false.
>   !
>   ! Removes closing parenthesis. Not very efficient: their index is known from
>   ! GET_LEVEL
>   nc = nch
>   do while (nc.ge.1 .and. (chain(nc:nc).eq.')'.or.chain(nc:nc).eq.' '))
>     nc = nc-1
>   enddo
>   !
>   ! Default result
>   descr%readonly = .false.
>   descr%status = readonly_operand
>   error = .false.
>   call sic_descriptor ('NO',descr,found)
>   !
>   ! It can be a variable. Non-contiguous sub-arrays allowed.
>   found = .true.  ! Verbose
>   call sic_materialize(chain(1:nc),idesc,found)
>   if (.not.found) then
>     !
>     if (chain(1:1).eq."'".and.chain(nc:nc).eq."'") then
>       ! Try to evaluate the expression
>       call sic_math_desc(chain,nc,fmt_r8,desc=idesc,error=error)
>       call sic_volatile(idesc)
>       if (error) then
>         call sic_message(seve%e,rname,'Invalid expression '//chain(1:nc))
>         return
>       endif
>     else
>       ! Plain reading 
>       read(chain(1:nc),*,iostat=ier) dble
>       idesc%type = fmt_l
>       if (ier.eq.0) idesc%type = fmt_r8 ! A number
>     endif
>   endif
>   !
>   ! Check it is scalar
>   !!Print *,'Allowed types ',fmt_r4,fmt_r8,fmt_i4,fmt_i8
>   if (idesc%type.eq.fmt_r4 .or.  &
>       idesc%type.eq.fmt_r8 .or.  &
>       idesc%type.eq.fmt_i4 .or.  &
>       idesc%type.eq.fmt_i8) then
>     if (idesc%ndim.eq.0) then
>       call sic_descriptor ('YES',descr,found) ! Checked
>     else if (product(idesc%dims(1:idesc%ndim)).eq.1) then
>       call sic_descriptor ('YES',descr,found) ! Checked
>     endif
>   endif
>   call sic_volatile(idesc)
>   descr%readonly = .false.
>   descr%status = readonly_operand
>   error = .false.
> end subroutine read_operand_isnum
> !
