Manual page for functions(PL)

Google




functions


Welcome     Gallery     Handbook


Categories of available functions:

plotting
arithmetic
strings
commalists
shell
sql
dates
times
misc


HOW TO USE FUNCTIONS

A number of functions are available for use in ploticus scripts and proc getdata filters , for a wide range of purposes including processing of arithmetic, strings dates, times, commalists , and so on. Functions usually take one or more arguments and return a value. Functions may be used with #set , #call or as operands in #if/#elseif conditional expressions .

Custom functions may be coded and added to the file custom.c, and accessed like any of the built in functions, except that the names of custom functions should begin with a double dollar sign ($$) when invoked from scripts.


FUNCTION SYNTAX

Function names always start with a dollar sign ($). Function arguments are enclosed by parentheses and if more than one argument, separated by commas (,). For example:
$formatfloat( @NUM, "%7.2f" )

Function calls may not be nested, ie. function arguments may not be functions.


In the following summaries, the function name appears along with a template for arguments that must be supplied.


PLOTTING

Note: the functions in this section may be used with a double dollar sign ($$) for faster function name search.

$inrange( value, axis ) or
$inrange( value, axis, min, max )

Return 1 if value within a range on the given axis. min and max are optional; if given they determine the range. If they are not given the range is the range of the axis within the plotting area.

$icolor( i )

Return one of 20 preselected colors. The color sequence was selected to give good contrast between nearby entries. i allowable range is 1 to 20; values out of this range are modulo into range.
Example: #set COLOR = $icolor( 2 )

$fieldname( n )

Return the field name assigned to field n. First is 1. If no field name was defined, noname is returned.

$dataitem( row, field )

Return the contents of the item in row and field of the current data set. row is a number, first is 1. field is either a number or an assigned name.

$data_to_absolute( axis, val )

Given a data location va in either X or Y space (specified by axis), return the absolute location.

$sleep( n )

Delay for n seconds. Occasionally useful when viewing plots interactively.

$getclick()

Produce a "More.." button and wait for user to click on it. Upon the click, return. Occasionally useful when viewing plots interactively.


ARITHMETIC AND NUMBERS

$arith( exp, format )

Simplistic arithmetic expression evaluator. exp is an expression made up of numbers and the arithmetic operators + - * /. No embedded spaces nor parentheses are allowed within the expression. Evaluation is strictly left to right. Unary plus/minus are allowed.
format is an optional printf(3) display format specifier controlling the format of the result, eg. %.0f. Default format is %g, which should suffice for all but very large or very small values. For more on format specifiers see your manual page on printf(3).
Example: #set RESULT = $arith(2+8/5) (result: 2)
Example: #set RESULT = $arith(2+-8) (result: -6)
Example: #set RESULT = $arith( 18*1000000000 , "%.f" )
Example:
#set RESULT = $arith( 18*.0000001 , "%.9f" )

$arithl(exp)

Same as $arith() except lazy, i.e. non-numeric operands are accepted and treated as if they were 0.

$isnumber(s)

Returns 1 if s is a valid number, 0 if not.
Example: #set RESULT = $isnumber(-0.24) (result: 1)
Example: #set RESULT = $isnumber(=) (result: 0)

$formatfloat(x,fmt)

Format x using printf-style format string fmt. May also be used to format integers by using a fmt such as %03.0f.
Example: #set RESULT = $formatfloat( 3.4425, "%3.2f" ) (result: 3.44)

$inr(n,lo,hi)

See if n is within the numeric range of lo to hi. Returns 1 if so, 0 if not. Non-numeric n always returns 0.

$numgroup( val, h, mode )

Convert val to a nearby multiple of h. Useful in grouping a set of numbers into bins. mode may be either low, mid, or high. For example, if f is 73 and h is 10, function returns 70, 75, or 80 for modes low, mid, high respectively.

$autoround(val,d)

Round val to a reasonable precision. Use a value of 0 for d for normal behavior. Increase d to get more precision, reduce d to get less precision.
Example: #set X = $autoround( @X, 0 )

$math(what,a,b)

Mathematical functions.
what	returns
----    -------
abs	absolute value of a (integer or floating point)
mod	a modulo b (integer or floating point)
div	integer division a / b (where a and b are integers)

Example: #set X = $math(abs,-57) would return 57.
Example: #set X = $math(mod,10,6) would return 4.

$random()

Returns a random number between 0.0 and 1.0.


STRINGS

$len(s)

Return the length of s.

$change(s1,s2,string)

Change all occurances of s1 to s2 in string.
Example: #set T = $change( "<", "<sup>", @T )

$expand( s )

Expand all @variables present in s. Example:
 #set B = "@A world"
 #set A = hello
 #set C = $expand( @B )
Variable C would then contain hello world.

$substring(s,n,len)

Return a substring of s. Substring begins at character n (first is 1) for a maximum length of len.
Example: $substring( "abcde", 3, 99 ) would give cde

$changechars(clist,s,newchar)

If string s contains any of chars in clist, change that character to newchar. clist may be passed as the word comma to represent a comma (,).
Example: #set RESULT = $changechars("*'", @S, "_" )

$deletechars(clist,s)

If string s contains any of chars in clist, delete that character.
Example: #set RESULT = $deletechars("*'",@S)

$stripws( s )

Strip any leading or trailing whitespace from s.

$contains(clist,s)

If string s contains any of chars in clist, return position (first=1) of the first occurance. Return 0 if none found. clist may be passed as the word comma to represent a comma (,).
Example: #set RESULT = $contains( "*'", @S )
Example: #set RESULT = $contains( ",", @S )

$lowerc(string)

Return the lower-case equivalent of string.
Example: #set RESULT = $lowerc(HELLO) (result: hello)

$upperc(string)

Return the upper-case equivalent of string
Example: #set RESULT = $upperc(Hello) (result: HELLO)

$strcat(s,t)

Return the concatenatation of strings s and t
Example: #set RESULT = $strcat(ABC,XY) (result: ABCXY)

$ntoken( n, s )

return the nth whitespace-delimited token in s.

$extractnum( s )

extract the first numeric entity embedded anywhere in s and return it.


COMMALISTS

These functions operate on a string which is in the form of a commalist .

$count(str,list)

Count the number of times str appears in list. If str is passed as * then this function will count the number of members in the list.
Example: #set RESULT = $count( "hello,aba,gabba,jabba" ) (result: 0)
Example: #set RESULT = $count( "x", "x,y,x,y,y,z,x" ) (result: 3)

$addmember(newmem,list)

Append a new member newmem to end of list. If list is empty before call, result will have one member.
Example: #set RESULT = $addmember( "red", @MYLIST )

$nmember(n,list)

Get the nth member of list.
Example: #set RESULT = $nmember( 2, "a,b,c,d,e" ) (result: b)

$commonmembers( list1, list2, mode )

Detect if list1 and list2 have any members in common. Returns 0 if no members in common. If mode is "count", then the number in common is returned (for a,b,c vs. c,d,e this would be 1; for a,a,a vs a,b,c it would be 3). Otherwise, when a match is found 1 is returned immediately.
Example: #set MATCH = $commonmembers( "a,b,c,d,e", "c,d,ee", "count" ) (result: 2)

$homogenous( list )

Return 1 if all members of list are the same, 0 if there are any differences among members. If list has only 1 member, 1 is returned. If list is empty, 0 is returned.

$makelist( s )

Convert s, a list of items separated by commas and/or whitespace, and return a commalist. Useful for building commalists from user input.
Example: #set LIST = $makelist( "1101 1102 1103" ) (result: 1101,1102,1103)
Example: #set LIST = $makelist( "1101, 1102, 1103" ) (result: 1101,1102,1103)


SHELL COMMAND INTERFACE

Functions related to the shell interface are described on the #shell manual page .


SQL DATABASE INTERFACE

Functions related to SQL interface are described on the #sql manual page .


DATES

These functions work with dates in various notations.

The default date format is mmddyy. Unless otherwise specified, these functions expect date arguments to be in the "current date format".

$setdatefmt(format)

Set the current date format.
Example: #call $setdatefmt( "yyyymmdd" )

$formatdate(date,newformat)

Return date, formatted to newformat. Use to convert dates to different notations, to extract year, month, day components, or to get weekday equivalent. Available formats are described here
Example: #set RESULT = $formatdate( @D, "yyyymmmdd" )

$datevalid(date)

Return 1 if date is a valid one in the current date format; return 0 if it is not.
Example: #if $datevalid(@apptdate) != 1

$todaysdate()

Return the current date. It will be in the date format currently in effect.
Example: #set RESULT = $todaysdate()

$daysdiff(date1,date2)

Return the difference in days between date1 and date2.
Example: #set RESULT = $daysdiff( 011298, 010198 ) (result: 11)

$julian(date)

Return the julian (number of days since Jan 1, 1977) equivalent of date. date should be a date in current format, or the special symbol today.

$jultodate(jul)

Return the date (in current format) that is equivalent to julian value jul.

$dateadd(date,ndays)

Return the date resulting when ndays are added to date.
Example: #set RESULT = $dateadd( 010198, 11 ) (result: 011298)

$dategroup( interval, mode, input )

Take date, datetime, or time input value, and adjust it for grouping purposes. For example, after a set of dates are processed using $dategroup( week, mid, .. ), the result can be tabulated to get a weekly distribution. Allowable interval values are week month quarter year day hour. Allowable mode values are mid and first. First character is sufficient for these two args.

$yearsold(birthdate,testdate)

Return the integer age in years as of testdate of a person born on birthdate.
Example: #set RESULT = $yearsold( 062661, 022098 ) (result: 36)

$setdateparms(parmname,value)

Set a date parameter. See config file documentation for descriptions of these parameters, including strictness of date format checking, the century pivot year, and lazy dates.
A pivot year is used to accomodate two-digit year values.
A lazy date has 00 as the day and/or month portion and is usually used in situations where the day and/or month is unknown or unavailable.
Strictness of date format checking: by default the length of a presented date must be consistent with the format specification. For example, an mm/dd/yy date must be 8 or 10 characters long; other lengths result in an error. This strictness may be relaxed by doing: #set STATUS = $setdateparms(Strictdatelengths,no)
Example of setting the pivot year: #set STATUS = $setdateparms(Pivotyear,90)
Example of allowing lazy days: #set STATUS = $setdateparms(Lazydates,days)
Example of allowing lazy days and months: #set STATUS = $setdateparms(Lazydates,both)


TIMES

These functions work with time values in various notations.

$settimefmt(fmt)

Set the current time notation to fmt. Available notations are HH:MM:SS, HH:MM, and MM:SS. (A leading HH can handle single digit hour values; a leading MM can handle single digit minute values).
Example: #set RESULT = $settimefmt(MM:SS) These functions work with time values.

$time()

Return the current time in hh:mm:ss format.
Example: #set RESULT = $time()

$timevalid(time)

Return 1 if time is valid in the current time format; return 0 if it is not.
Example: #if $timevalid(@appttime) != 1

$formattime(time,newformat)

Take time, which is in the current time format, and reformat it using newformat.
Example: #set t2 = $formattime( "14:22", "hh:mma" )

$timesec()

Get number of seconds since midnight for the current time.
Example: #set RESULT = $timesec()

$tomin(t)

Take t (a value in the current time notation) and return the equivalent, expressed in # of minutes since 0:00:00. Result is float, with any seconds expressed as the decimal portion of a minute.
Example: #set RESULT = $tomin( "3:45" )

$frommin(m)

Inverse of $tomin(), where m is a float minutes value. Result is equivalent time in current notation.
Example: #set RESULT = $frommin( 3.75 )

$timediff(t1,t2)

Find the difference between two times t1 and t2 (both in current notation). Result is expressed in float minutes (any seconds expressed as fraction of a minute)
Example: #set RESULT = $timediff( "3:43", "2:28" )


CHECKSUMS

Checksum routines use an odd-even algorithm that takes an integer and computes a checksum digit 0 - 9 or x. This checksum digit may be used to guard against key errors and transposed digits.

$checksumvalid(s)

Returns 1 if s is a valid number with checksum. 0 if not.
Example: #if $checksumgood(39) = 1 (result: true)

$checksumencode(i)

Result is integer i with a checksum digit appended.
Example: #set CHECKNUM = $checksumencode(29) (result: 294)

$checksumnext(s)

Take s which is a number including trailing checksum digit, and increment the number and recompute new checksum digit. Result is returned. Example: #set RESULT = $checksumnext(39) = 1 (result: 41)


MISCELLANEOUS

$getenv(varname)

Return the contents of environment variable varname.

$errormode( mode )

Control the display of error messages. Allowable values for mode are stderr and stdout. For command line applications the default is generally stderr; for CGI applications it is stdout, so that messages are visible. To hide error messages in CGI applications, set mode to stderr.

$uniquename()

Return a short identifier generated using the current date, time to the current second, and process id. The name will be unique on a per-host basis.

$tmpfilename(tag)

Generate a unique (on a per-host basis) temporary file name, suitable for use in shell commands. Uses tmpdir as specified in project config file . Format of the name is tmpdir/tag.uniquename where uniquename is a short name generated using the current date, current time to the second, and process id. tag may be passed as a zero length string if desired.

$fileexists( dir, name )

Return 1 if the requested file can be opened, 0 otherwise. dir indicates the directory that name is relative to and may be one of /, scriptdir, tmpdir. dir may also be datadir if using pocketSQL; this currently requires that a database access be executed earlier in the page.
Example: #set A = $fileexists( tmpdir, "mytmp" )

$ref( varname )

Return the contents of varname. May be useful when a variable contains the name of another variable, to extract the value of the other variable. Example:
  #set A = "hello"
  #set B = "A"
  #set C = $ref(@B)

C would then contain hello.

$def( varname )

Return 1 if varname has been set to a value. Return 0 otherwise.

$isleep( n )

Delay for n seconds.


data display engine  
Copyright Steve Grubb


Markup created by unroff 1.0,    December 10, 2002.