CALL HERINP(EXPR,NCHR,TYPE,LENGTH,OUTV,NOUT,NRET,IER) arg. I/O type description EXPR I A** Byte array containing the expressions to evaluate. Last byte should be a 0. NCHR I I*4 length of input expression string TYPE I A*1 Byte denoting type of conversion wanted. Possible types are: ’F’ reals ’I’ integers ’L’ logicals ’A’ bytes ’C’ characters LENGTH I I*4 Length of type in bytes. Possible lengths depend on type: TYPE LENGTH ’F’ 4,8 ’I’ 2,4 ’L’ 1,2,4 ’A’ any ’C’ any OUTV O A** Array containing the decoded values. NOUT I I*4 Length of OUTV in units of LENGTH. NRET O I*4 Number of items found. IERD O I*4 Error return code. The following error codes can be returned: IER explanation 0 no error -11 bad call -12 unknown function -13 syntax error -14 illegal character -15 wrong repeat argument -16 wrong number of arguments -17 arithmetic error -18 not enough internal memory -19 conversion error -20 unequal list length -21 empty list -22 nested lists -23 output buffer overflow -24 floating overflow/underflow in conversion
Examples: 1 2 3/3 sin(pi) yields 1.0 2.0 1.0 0.0 log(10)::4 yields 1.0 1.0 1.0 1.0 log(10):log(100):2/4 yields 1.0 1.5 2.0 10**[0 1 2 3] yields 1.0 10.0 100.0 1000.0 Notes: loops, repeats and lists cannot be nested!!
- Logicals (TYPE = ’L’).
Logicals are decoded in the following way: YES, JA and TRUE
result
in a logical which is true, NO, NEE and FALSE give a logical
which
is false. It is sufficient to give the first letter of the possible
affirmative and negative replies. Any other answer will result
in
a syntax error.
- Bytes (TYPE = ’A’).
Bytes are not decoded, they are just passed through. The end
of
the output string is denoted by a zero byte.
- Characters (TYPE = ’C’).
The character strings are separated by blanks and/or a comma.
If a character string exceeds the value of LENGTH, an error
message will be generated.
sin(x), asin(x), sinh(x), cos(x), acos(x), cosh(x), tan(x), atan(x), tanh(x), atan2(y,x), rad(x), deg(x), pi, exp(x), ln(x), log(x), sqrt(x), abs(x), sinc(x), c, g, m, erf(x), erfc(x), k, h, p, s, max(x1,x2), min(x1,x2), mod(i,n), int(x), nint(x), sign(x), undef, ifgt(x,y,zf,zf) iflt(x,y,zf,zf), ifge(x,y,zf,zf), ifle(x,y,zf,zf), ifeq(x,y,zf,zf), ifne(x,y,zf,zf), ranu(x,y), rang(x,y), ranp(x), sind(x), asind(x), cosd(x), acosd(x), tand(x), atand(x), atand2(y,x)
Constants are in mks units!! c=speed of light, g=gravitational constant, m=solar mass, k=boltzmann’s constant, h=planck’s constant, p= ,s=.
xx/xxx/xx Created for GIPSY - (c) University of Groningen - Netherlands 16/dec/87 Type C implemented (KGB) 25/jan/88 Document created (KGB) 26/feb/88 In GENLIB (KGB) 18-may-88 Implemented for NEMO (PJT) 25-nov-88 Some global variables are now local (PJT) 6-dec-88 New version (V1.1) from Groningen installed (PJT) 5-dec-93 Allow DO loops to go > 32768 (PJT) 3-nov-01 use NEMO’s xrandom() instead of rand() PJT