home | help
SNOBOL4FUNC(1)			 CSNOBOL4 Manual		  SNOBOL4FUNC(1)

NAME
     snobol4func - SNOBOL4 summary of built-in functions

DESCRIPTION
     ANY(charset)
	 Pattern:  returns  a  pattern	that matches one character in the STRING
	 charset.  Standard.

     APPLY(func,arg1,...)
	 Function: calls function func with the supplied arguments.  Standard.

     ARBNO(pattern)
	 Pattern: returns a pattern that matches zero or more  repeats	of  pat-
	 tern.	Standard.

     ARG(func,n)
	 Function: returns the name of the nth argument to function func.  Stan-
	 dard.

     ARRAY(proto,value)
	 Data: Creates an ARRAY object.  Standard.

     ATAN(arg)
	 Math:	Returns  the principal value of the arc tangent of its argument.
	 Catspaw Macro SPITBOL extension, added in CSNOBOL4 1.4.

     BACKSPACE(unit)
	 I/O: Not implemented!! See SET() and SSET().  Standard.

     BREAK(charset)
	 Pattern: Returns a pattern that matches successively longer runs  (zero
	 or more) characters NOT in string charset.  Standard.

     BREAKX(charset)
	 Pattern:  A  pattern  function  used for fast scanning.  BREAKX(str) is
	 equivalent to BREAK(str) ARBNO(LEN(1) BREAK(str)).

	 In other words BREAKX matches a sequence of ever larger strings  termi-
	 nated by a break set.	BREAKX can be used as a faster matching replace-
	 ment for ARB: BREAKX('S') 'STRING' always runs faster than ARB 'STRING'
	 since	it only attempts matching 'STRING' at locations where an 'S' has
	 been detected.  SPITBOL 360 extension, added in CSNOBOL4 version 0.98.

     CHAR(n)
	 String: takes an integer from 0 to 255 and returns the nth character in
	 &ALPHABET.  SPITBOL 360 extension,  added  in	CSNOBOL4  version  0.98.
	 SNOBOL4+ has a CHR() function.

     CHOP(real)
	 Math:	truncates  the fractional part of its argument (rounding towards
	 zero), and returns a REAL value.  Catspaw SNOBOL4+ extension(?),  added
	 in CSNOBOL4 version 0.98.4.

     CLEAR()
	 Interpreter:  Clears  ALL natural variable values (including predefined
	 pattern variables ABORT, ARB, BAL, FENCE, REM, and SUCCEED).  Standard.

     CODE(str)
	 Interpreter: Compiles the argument as source code and	returns  a  CODE
	 value,  suitable  for use with :<code>.  If execution falls off the end
	 of the code, the program will exit.  Standard.

     COLLECT(n)
	 Interpreter:  Triggers garbage collection.   Returns  failure	if  less
	 than n bytes are available after collection.  Standard.

     CONVERT(value,type)
	 Data:	Convert value to data type type.  Can convert TABLE to ARRAY for
	 iteration over members.  Standard.   Supports	conversion  to	NUMERIC,
	 SPITBOL 360 extension, added in CSNOBOL4 version 0.99.4.

     COPY(value)
	 Data: returns a copy of the supplied value.  Must be an ARRAY or a DATA
	 object.  Copy	is `shallow": the returned object will point to the same
	 objects as the source container.  Standard.

     COS(argument)
	 Math: Return cosine of argument in radians.  Catspaw Macro SPITBOL  ex-
	 tension, added in CSNOBOL4 version 0.98.4.

     DATA(prototype)
	 Data:	 Declares   a  DATA  struct  type.  prototype  is  of  the  form
	 name(field,...).  name is declared as	a  "constructor"  function,  and
	 each  field  is  declared  as an "accessor" function for the type.  Any
	 number of types can use the same field names (regardless of  position).
	 Standard.

     DATATYPE(value)
	 Data:	Returns  a  string  with  the data type of value, one of: ARRAY,
	 BLOCK,  CODE,	EXPRESSION,  EXTERNAL,	INTEGER,  NAME,  PATTERN,  REAL,
	 STRING, TABLE, or a DATA() type name.	Standard.

     DATE()
	 String: returns MM/DD/YYYY HH:MM:SS.  Standard.  For compatibility with
	 Catspaw  Macro  SPITBOL,  since CSNOBOL4 version 0.99.4 DATE(0) returns
	 strings of the form MM/DD/YY HH:MM:SS, and DATE(2) returns  strings  of
	 the form YYYY-MM-YY HH:MM:SS.

     DEFINE(prototype[,label])
	 Functions:   declares	 a   function	using	prototype  of  the  form
	 "name([argname,...])[localname,...]".	 Optional  label  supplies   the
	 function entry point.	Standard.

     DELETE(filename)
	 I/O:  A predicate which tries to remove the named file, and fails if it
	 cannot.  SITBOL extension: added in CSNOBOL4 version 0.98.5.

     DETACH(name)
	 I/O:  Detach any I/O associations for named variable.	Standard.

     DIFFER(val1,val2)
	 Predicate:  Succeeds if the supplied values refer to different objects,
	 strings, or numeric values.  Standard.

     DUMP(n)
	 Data: dumps natural variable values to stdout if  argument  n	is  non-
	 zero.	Standard.

     DUPL(string,n)
	 String: Returns a string with n copies of argument string.  Standard.

     ENDFILE(unit)
	 I/O:  Closes the file attached to I/O unit unit.  Standard.

     EQ(i1,i2)
	 Predicate: Succeeds if i1 is arithmetically equal to i2.  Standard.

     EVAL(v)
	 Interpreter:  Evaluates v (an unevaluated expression, INTEGER, REAL, or
	 STRING), and returns the result; returns failure on syntax error or the
	 expression fails.  Standard.

     EXIT(arg)
	 System: Passes process control to a shell to execute arg as a	command.
	 Returns  failure  if  arg is not a STRING.  Macro SPITBOL extension(?),
	 added in CSNOBOL.  Does NOT implement "save file" feature of SPITBOL.

     EXP(x)
	 Math: Returns the value e ** x.  Catspaw SNOBOL4+ extension,  added  in
	 CSNOBOL4 version 0.98.4.

     EXTERNAL_DATATYPE(x)
	 Functions:  Returns a string for the datatype name for an EXTERNAL type
	 returned by an external function created by  LOAD().  Inspired  by  the
	 DATACODE() function in Fred Weigel's SNOBOL4X extensions.  CSNOBOL4 ex-
	 tension, added in CSNOBOL4 version 2.2.

     EXTERNAL_MODULE_NAME(x)
	 Functions:  Returns a string for (internal) module name for an EXTERNAL
	 type returned by an external function created by LOAD().  CSNOBOL4  ex-
	 tension, added in CSNOBOL4 version 2.2.

     EXTERNAL_MODULE_PATH(x)
	 Functions: returns a string for the path to an object file for the mod-
	 ule  for  an  EXTERNAL type returned by an external function created by
	 LOAD().  CSNOBOL4 extension, added in CSNOBOL4 version 2.2.

     FIELD(name,n)
	 Data: Returns a string with the name of the nth member of  DATA()  type
	 name.	Standard.

     FILE(string)
	 I/O:  A  predicate  which  tests if a file exists, and fails if it does
	 not.  SITBOL extension, added in CSNOBOL4 version 0.98.5.

     FILE_ABSPATH(string)
	 I/O: A predicate which returns null if its argument is an absolute file
	 path, and failure if the path is relative.  CSNOBOL4  extension,  added
	 in CSNOBOL4 version 1.5.

     FILE_ISDIR(string)
	 I/O:  A  predicate which returns the null string if its argument is the
	 pathname of a directory, and returns failure if not.	CSNOBOL4  exten-
	 sion, added in CSNOBOL4 version 1.5.

     FREEZE(table)
	 Data:	prohibits creation of new entries in the referenced table.  This
	 is useful once a table has been initialized to avoid creating empty en-
	 tries on lookups that fail.  This can greatly	improve  program  speed,
	 since	frozen	tables	will  not  become  clogged  with  empty entries.
	 Lookups for uninitialized entries will return	the  null  string.   At-
	 tempts  to  assign  to  a non-existent entry will cause a "Variable not
	 present where required" error.  Catspaw SNOBOL4+  extension,  added  in
	 CSNOBOL4 version 0.98.2.

     FUNCTION(name)
	 Function:  A  predicate  which evaluates its argument as a string (with
	 case folding), and returns the null string if a function with that name
	 exists and fails if it does not.  SITBOL extension, added  in	CSNOBOL4
	 version 0.99.44.

     GE(i1,i2)
	 Predicate:  Succeeds if i1 is arithmetically equal than or equal to i2.
	 Standard.

     GT(i1,i2)
	 Predicate: Succeeds if i1 is arithmetically equal than i2.  Standard.

     HOST(i,...)
	 Host O/S functions. See snobol4host(3).  Macro SPITBOL extension, added
	 in CSNOBOL4 version 0.98.4.

     IDENT(v1,v2)
	 Predicate: Succeeds if the supplied values refer to  the  same  object,
	 string, or numeric value.  Standard.

     INPUT(variable,unit,opt,name)
	 I/O:  Associate variable for input, see snobol4io(1).	Standard.*

     INTEGER(value)
	 Predicate:  Succeed if value is an INTEGER.  Standard.

     IO_FINDUNIT()
	 I/O: Returns an unused I/O unit number for use with the INPUT() or OUT-
	 PUT()	functions.   IO_FINDUNIT() is meant for use in subroutines which
	 can be reused.  IO_FINDUNIT() will never return a unit number below 20.
	 CSNOBOL4 extension, added in version 0.99.4.

     ITEM(a,i1,...)
	 Data:	Reference an element of an ARRAY or TABLE which is the result of
	 an expression (ie; $variable).  Standard.

     LABEL(name)
	 Predicate: Evaluates argument as a name (with case  folding),	and  re-
	 turns	the  null string if a label with that name has been defined, and
	 fails if it does not.	Steve Duff's Macro SPITBOL extension,  added  in
	 CSNOBOL4 version 1.5 (Added in CSNOBOL4 version 0.99.44, but unreliable
	 until version 1.5).

     LABELCODE(name)
	 Interpreter:  Evaluates argument as a name (with case folding), and re-
	 turns the CODE (if any) associated with the  label  of  that  name,  or
	 fails.  SITBOL extension, added in CSNOBOL4 2.1.

     LE(i1,i2)
	 Predicate: tests if first argument is arithmetically less than or equal
	 to second argument.  Standard.

     LEN(n)
	 Pattern:   Returns a PATTERN which matches exactly n characters.  Stan-
	 dard.

     LEQ(s1,s2)
	 Predicate: tests if first argument is lexically equal to  second  argu-
	 ment.	SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.

     LGE(S1,S2)
	 Predicate:  tests  if first argument is lexically greater than or equal
	 to second argument.  SPITBOL 360 extension, added in  CSNOBOL4  version
	 0.98.2.

     LGT(s1,s2)
	 Predicate: tests if first argument is lexically greater than second ar-
	 gument.  SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.

     LLE(s1,s2)
	 Predicate:  tests  if first argument is lexically less than or equal to
	 second argument.  SPITBOL 360	extension,  added  in  CSNOBOL4  version
	 0.98.2.

     LLT(s1,s2)
	 Predicate:  tests if first argument is lexically less than second argu-
	 ment.	SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.

     LNE(s1,s2)
	 Predicate: tests if first argument is lexically different  from  second
	 argument.  SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.

     LN(value)
	 Math: an alias for LOG(), Catspaw SNOBOL4+ extension, added in CSNOBOL4
	 version 1.4.

     LOAD(prototype,file)
	 Function:   Load  an  external function from dynamically loaded library
	 file.	Standard.

     LOCAL(name,n)
	 Interpreter: Returns a STRING with the nth argument to  function  named
	 name.	Standard.

     LOG(value)
	 Math:	returns the natural logarithm of its argument.	Catspaw SNOBOL4+
	 extension, added in CSNOBOL4 version 0.98.4.

     LPAD(str,n,char)
	 String: Takes the first argument (subject) string, and left pads it out
	 to the length specified in the second argument, using the first charac-
	 ter of the optional third argument.  If the third argument is	missing,
	 or  is  the  null string, spaces will be used for padding.  The subject
	 will be returned unmodified if already long enough.  SPITBOL 360 exten-
	 sion, added in CSNOBOL4 version 0.98.

     LT(i1,i2)
	 Predicate: Succeeds if i1 is arithmetically less than i2.  Standard.

     NE(i1,i2)
	 Predicate: Succeeds if i1 is arithmetically not equal to i2.  Standard.

     NOTANY(charset)
	 Pattern:  Returns a pattern which matches on character NOT  present  in
	 STRING charset.  Standard.

     OPSYN(new,old,n)
	 Interpreter:  If  n omitted (or zero), new and old are treated as func-
	 tion names, and new becomes a synonym for old: A call to a synonym MUST
	 have the correct number of arguments; trailing  arguments  can  NOT  be
	 omitted.   If	n  is  1, new and old are treated as unary operators, or
	 function names.  If n is 2, new and old are treated  as  binary  opera-
	 tors, or function names.  Standard.

     ORD(string)
	 String:  returns  the	INTEGER ordinal value (zero to 255) of the first
	 character in its string argument (the inverse of CHAR()).  CSNOBOL4 ex-
	 tension, added in version 0.99.44.  SNOBOL4+ has an ASC() function.

     OUTPUT(variable,unit,options,name)
	 I/O:  Associate variable for output, see snobol4io(1).  Standard*.

     POS(n)
	 Pattern:  Returns a pattern which succeeds if the pattern matching cur-
	 sor is at (non-negative INTEGER) position n, or fails.  Standard.

     PROTOTYPE(a)
	 Data:	Returns the prototype of ARRAY a.  Standard.

     REMDR(n,m)
	 Math:	Returns the remainder from dividing INTEGER n  with  INTEGER  m.
	 Standard.

     RENAME(new,old)
	 I/O:  A predicate which attempts to rename the file named by old to the
	 name new.  SITBOL extension: added in CSNOBOL4 version 0.98.5.   Unlike
	 the SITBOL version, if the target file exists, it will be removed.

     REPLACE(str,charset1,charset2)
	 String:  Returns  a  string  with  each  character  str that appears in
	 charset1 replaced by the corresponding character in <charset2>.   Stan-
	 dard.

     REVERSE(str)
	 String:  returns  its subject string in reverse order.  SPITBOL 360 ex-
	 tension, added in CSNOBOL4 version 0.98.2.

     REWIND(unit)
	 I/O:  Reset input pointer of file associated  with  unit  to  start  of
	 file.	Standard.

     RPAD(str,n,char)
	 String:  Takes  the  first argument (subject) string, and right pads it
	 out to the length specified in the second  argument,  using  the  first
	 character  of	the  optional  third argument.	If the third argument is
	 missing, or is the null string, spaces will be used for  padding.   The
	 subject  will	be  returned unmodified if already long enough.  SPITBOL
	 360 extension, added in CSNOBOL4 version 0.98.

     RPOS(n)
	 Pattern: Returns a pattern which succeeds if the pattern matching  cur-
	 sor  is  at (non-negative INTEGER) position n, counting from the end of
	 the subject string, or fails.	Standard.

     RSORT(ta,c)
	 Data: see SORT().  Macro SPITBOL extension(?), added in  CSNOBOL4  ver-
	 sion 0.98.

     RTAB(n)
	 Pattern: Returns a PATTERN which matches all characters up to (non-neg-
	 ative INTEGER) position n, counting from the end of the subject string;
	 matching  fails  if  cursor  is  past position n.  REM is a synonym for
	 RTAB(0).  Standard.

     SERV_LISTEN(family,type,service)
	 I/O: takes three STRING arguments and makes snobol4(1) into  a  network
	 server  process.  family must be either "inet" for an Internet Protocol
	 v4 socket, "inet6" for an Internet Protocol v6 socket, or "unix" for  a
	 local	("unix	domain")  socket.   The  second  argument,  TYPE must be
	 "stream", and the third argument, service must be a port number or ser-
	 vice name (for an  internet  socket),	or  a  pathname  (for  a  "unix"
	 socket).   SERV_LISTEN()  listens  for incoming requests, accepts them,
	 then "forks" a child process and returns  an  integer	file  descriptor
	 which	can  be  opened  for bidirectional I/O using a "/dev/fd/n" magic
	 pathname.  The original  ("parent")  process  never  returns  from  the
	 SERV_LISTEN()	call.	This  function is only available on systems with
	 the "fork" system call, which makes a child process which is an identi-
	 cal copy of the parent process.  CSNOBOL4 extension, added  in  version
	 0.99.44

     SET(unit,offset,whence)
	 I/O:  Seeks the file pointer of an open file.	The first argument is an
	 I/O unit number, the second is an integer offset.  The third  argument,
	 an  integer determines from "whence" the file pointer will be adjusted.
	 If whence is zero the starting point is the beginning of the  file,  if
	 whence  is  one, the starting point is the current file pointer, and if
	 whence is two, the starting point is the end of the  file.   SET()  re-
	 turns the new file pointer value.  On systems with 64-bit file pointers
	 and  32-bit  integers the values will be truncated to 32 bits, and only
	 the first and last 4 gigabytes of a file can be accessed directly:  see
	 SSET().   Catspaw  Macro  SPITBOL  extension, added in CSNOBOL4 version
	 0.99.1.

     SETEXIT(label)
	 Interpreter: The argument to SETEXIT() is the name of a label	to  pass
	 control  to if a subsequent error occurs, when the keyword &ERRLIMIT is
	 non-zero.  The value of &ERRLIMIT is positive, it is  decremented  when
	 the  error  trap  occurs.  A SETEXIT() call with a null argument causes
	 cancellation of the intercept.  Subsequent errors will terminate execu-
	 tion as usual with an error message.  The result returned by  SETEXIT()
	 is the previous intercept setting (i.e., a label name or null if no in-
	 tercept  is  set).   This can be used to save and restore the SETEXIT()
	 conditions in a recursive environment, or chain handlers.

	 The error intercept routine may inspect  &ERRTYPE,  &ERRTEXT,	&LASTNO,
	 &LASTFILE, &LASTLINE, and take one of the following actions:

	 1.  Branching to the special label ABORT causes error processing to re-
	 sume as though no error intercept had been set.

	 2.  Branching to the special label CONTINUE causes program execution to
	 resume by taking the failure exit of the statement in error.

	 3.  Branching to the special label SCONTINUE causes execution to resume
	 at the point of interruption.

	 4.  If  the  error  occurred inside a function (&FNCLEVEL is non-zero),
	 branch to labels RETURN, FRETURN, or NRETURN to return from  the  func-
	 tion.

	 The  error  intercept	routine  must  reissue the SETEXIT() in order to
	 catch further errors. Handlers cannot be nested: only one copy  of  the
	 saved execution state is kept.

	 SPITBOL 360 extension, added in CSNOBOL4 version 1.4.

     SIN(argument)
	 Math: Return sine of argument in radians.  Catspaw Macro SPITBOL exten-
	 sion, added in CSNOBOL4 version 0.98.4.

     SIZE(string)
	 String: returns the length of the STRING argument.  Standard.

     SORT(ta,c)
	 Data:	takes  two arguments.  The first can be either an array or a ta-
	 ble.  If the first argument is an array, it may  be  singly-dimensioned
	 in which case the second argument, if non-null should indicate the name
	 of  a field of a programmer defined data type to use to access the sort
	 key.  Otherwise the first argument should be a table or a doubly-dimen-
	 sioned array, in which case the second argument may an integer indicat-
	 ing the array column on which to sort.  If the second argument is null,
	 it is taken to be 1.  The array (or table) is not modified; a new array
	 is allocated and returned.  SORT() sorts elements in  ascending  order,
	 while RSORT() sorts in descending order.

	 Example:  for a table TAB of integers, indexed by strings being used to
	 tabulate word counts FREQ = RSORT(TAB,2) returns  an  array  such  that
	 FREQ<1,1>  contains the most frequent word while FREQ<1,2> contains the
	 number of occurrences of that word.  While WORDS = SORT(TAB,1)  returns
	 an  array  with  the rows by the lexicographical ordering of the words;
	 WORDS<1,1> contains the lexicographically  first  word  and  WORDS<1,2>
	 contains  the number of occurrences of that word.  Macro SPITBOL exten-
	 sion(?), added in CSNOBOL4 version 0.98.

     SPAN(charset)
	 Pattern: Returns a pattern that matches the longest run of one or  more
	 characters in string charset.	Standard.

     SQRT(argument)
	 Math:	Return	the  square  root.  Fails  if  the argument is negative.
	 Catspaw Macro SPITBOL extension, added in CSNOBOL4 version 0.90.

     SSET(unit,offset,whence,scale)
	 I/O: "scaled set" function, to handle files larger than 4GB on  systems
	 with  32-bit INTEGER variables.  The first three arguments analogous to
	 the same arguments for the SET() function.  The last parameter is  used
	 as  a	multiplicative	scaling factor on the offset parameter, and as a
	 divisor on the return value.  When used in  combination  with	relative
	 SET() calls (whence of one), any file offset can be achieved, even when
	 system file offsets are larger than can be represented in a SNOBOL4 IN-
	 TEGER.   Support  for	"Large Files" is enabled when available, but not
	 all file systems support large files.	 CSNOBOL4  extension,  added  in
	 version 0.99.44.

     STOPTR(name,type)
	 Interpreter:	Disable  type  tracing for name.  Standard.  SPITBOL 360
	 extension of first letter of trace type accepted since CSNOBOL4 2.0.

     SUBSTR(subject,pos,len)
	 String: Takes a subject string as its first argument, and  returns  the
	 substring  starting  at  the  position specified by the second argument
	 (one-based) with a length specified by  the  third  argument.	 If  the
	 third	argument  is missing or zero, the remainder of the string is re-
	 turned.  SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.

     TAB(n)
	 Pattern:  Returns a PATTERN which matches all characters  up  to  (non-
	 negative  INTEGER)  position n;  matching fails if cursor is past posi-
	 tion n.  Standard.

     TABLE(n,m)
	 Data:	Return a TABLE object, with (optional) initial size n and  addi-
	 tional extent size m.	Standard.

     TAN(argument)
	 Math:	Return	tangent of argument in radians.  Catspaw SNOBOL4+ exten-
	 sion?, added in CSNOBOL4 version 0.98.4.

     THAW(table)
	 Data: restores normal entry creation behavior after FREEZE().	 Catspaw
	 SNOBOL4+ extension, added in CSNOBOL4 version 0.98.2.

     TIME()
	 Interpreter:  Returns program execution time in milliseconds.	Standard
	 (returning INTEGER).  Returns REAL since CSNOBOL4 0.99.44.

     TRACE(name[,type[,tag[,func]]])
	 Intrepreter: Associates name for type	    ('VALUE' (default),  'CALL',
	 'RETURN',	 'FUNCTION',  'LABEL',	'KEYWORD')  tracing.  tag is in-
	 cluded in trace output if name is not a natural variable; func  is  op-
	 tional  name  of  function  to  call  with name and tag arguments.  See
	 snobol4key(1) &TRACE (must be	non-zero  to  enable  TRACE.   Standard.
	 SPITBOL  360  extension  of  first  letter of trace type accepted since
	 CSNOBOL4 2.0.

     TRIM(str)
	 String: Returns str with trailing blanks and tabs removed.  Standard.

     UNLOAD(name)
	 Function: Removes the function definition for function name.  Standard.

     VALUE(name)
	 Interpreter:  An "accessor" function, defined for STRING and  NAME,  so
	 that  user  data  types  can  declare	a VALUE field, and allow uniform
	 treatment of variables and user types.  Standard.

     VDIFFER(v1,v2)
	 Misc: If the two arguments, DIFFER(), the first argument's value is re-
	 turned.  This is intended to be used  in  contexts  where  DIFFER(X)  X
	 would	otherwise  have  been  used.   Extension from Steve Duff's Macro
	 SPITBOL, added in CSNOBOL4 version 0.99.44.

NOTES
     A "predicate" is a function that either returns the null string or failure.

     An "accessor" is a function which returns it's value by NAME  (and  can  be
     used on the right hand side of an assignment).

BUGS
     Descriptions are too brief!!

     See  http://www.regressive.org/snobol4/docs/books.html#green  for	Standard
     function definitions.

     Need to research origins of Macro SPITBOL extensions.

SEE ALSO
     snobol4(1), snobol4blocks(1).

CSNOBOL4B 2.3.1 		 March 31, 2022 		  SNOBOL4FUNC(1)

home | help