SMARTS POSIX Layer Configuration

The parameters described in this section are POSIX parameters only.

The POSIX start-up options for the SMARTS environment are specified as keyword parameters (so-called "sysparms"). These SYSPARM (z/OS) or SYSIPT (VSE) specifications must be entered according to established keyword coding conventions. See Sysparm Format

The description of parameters is organized under the following headings:


SMARTS POSIX Log and Trace Parameters

Both the Logging and Tracing configurations are controlled by three parameters respectively. They define the 'size' of the Data Collection structures. Data Collection is a SMARTS mechanism for buffering output in dataspaces to reduce the perfomance implications of outputting large volumes of Trace or Log records. If any of the following parameters are set to zero or not specified, Data Collection will not occur and all data will be output directly to the DD names specified, with possible performance degradation resulting.

LOG_DATA_COLL_ELEMENT_SIZE
Parameter Use Possible Values Default
LOG_DATA_COLL_ELEMENT_SIZE The size (in bytes) of a data element within the log data collection block. 16 - 32767 0

The element contains the data collection prefix area (DCPA) in the first 64 bytes; followed by the data collected by the user.

LOG_DATA_COLL_BLOCK_SIZE
Parameter Use Possible Values Default
LOG_DATA_COLL_BLOCK_SIZE The size of a block within the log data collection data space. LOG_DATA_COLL_ELEMENT_SIZE
- 32767
1024

The size of the block will determine how many elements it will contain. The more elements a block contains, the less IO required to harden the output, as the data is written out by block.

LOG_DATA_COLL_BLOCK_COUNT
Parameter Use Possible Values Default
LOG_DATA_COLL_BLOCK_COUNT Number of blocks in the log data collection data space.

1 - n where

n * blocksize <= 2GB

8

The block count will determine how many blocks the data collection structure will contain. This in turn determines how many concurrent threads the data collections mechanism can process concurrently.

If statistics are being collected and the data is to be hardened (STATISTICS_INCLUDE=LOG), then the element and block values will be overridden by the length of the longest statistics block, if greater than the block value specified.

TRACE_DATA_COLL_ELEMENT_SIZE
Parameter Use Possible Values Default
TRACE_DATA_COLL_ELEMENT_SIZE The size (in bytes) of a data element within the trace data collection block. 16 - 32767 128

The element contains

  • the data collection prefix area (DCPA) in the first 64 bytes; followed by

  • the data collected by the user.

TRACE_DATA_COLL_BLOCK_SIZE
Parameter Use Possible Values Default
TRACE_DATA_COLL_BLOCK_SIZE The size of a block within the trace data collection data space. TRACE_DATA_COLL_ELEMENT_SIZE
- 32767
1024

The size of the block will determine how may elements it will contain. The more elements a block contains, the less IO required to harden the output, as the data is written out by block.

TRACE_DATA_COLL_BLOCK_COUNT
Parameter Use Possible Values Default
TRACE_DATA_COLL_BLOCK_COUNT Number of blocks in the trace data collection data space. 1 - n
where
n * blocksize <= 2 GB
8

The block count will determine how may blocks the data collection structure will contain. This in turn determines how many concurrent threads the data collections mechanism can process concurrently.

SMARTS POSIX Tracing Parameters

Tracing parameters are processed in the order in which they are entered. No effort is made to process all includes before excludes or vice versa.

SYSTEM_TRACE_LEVEL
Parameter Use Possible Values Default
SYSTEM_TRACE_LEVEL Granularity of tracing to be collected. 1 - 5 1

Five (5) levels of tracing are possible; level 1 provides the least amount of tracing information, and level 5 provides the maximum amount of tracing information.

Use the following guidelines to determine what to trace for a given trace level:

Level Description
1 The minimum amount of information needed to identify why the trace occurred and the event in question. Only main events are traced. The trace information is formatted to fit on one print line. Use this level to gather trace information with a minimum of overhead.
2 Same as level 1 except that all events are traced.
3 Same as level 2 with additional trace records for each event that may include parameter lists and single values including pointers. Control blocks are not included.
4 Same as level 3 with additional trace records for each event that may include control blocks or parts of control blocks that are relevant to the trace event.
5 Same as level 4 with all relevant information related to the trace event: control blocks, buffers, and any other data that may be useful. This level will have a severe impact on system performance.

When the APSTRCE identifier is provided in a SMARTS job stream, the trace data collection mechanism attempts to open the file identified by APSTRCE and write unformatted trace data to it. The file is generally a blocked dataset with the ability to hold block-size/element-size records per block.

The element size determines the amount of data from a single request that the trace collection mechanism can handle. If the element size is set to 128 bytes, for example, the collection mechanism accepts a DCPA and up to 64 bytes of additional information. If the DCPALEN field value is greater than 64 bytes in this case, anything after the 64th byte of information in the additional data is not logged. Although the element size can be increased, the larger the element size, the fewer the elements that will fit into the trace buffer and the greater the impact on system performance.

When the identified APSTRCF is provided in the SMARTS job stream, the trace mechanism formats the provided DCPA and any additional data in a generic format and writes the formatted data to the dataset identified by APSTRCF. The trace logic must format and write this data immediately; thus if large amounts of data are traced, system performance slows significantly. Each additional piece of data to be written slows performance even more. You can manage the situation by writing the code that builds requests to the trace subsystem so that it properly restricts the amount of data that is traced.

TRACE_SYSTEM_INCLUDE
Parameter Use Possible Values Default
TRACE_SYSTEM_INCLUDE Specifies system trace options to include in trace. see table none

One trace option may be specified per parameter. To activate more than one option, the parameter must be specified multiple times:

TRACE_SYSTEM_INCLUDE = CFUNCTION
TRACE_SYSTEM_INCLUDE = CONDVAR
TRACE_SYSTEM_INCLUDE = MUTEX
Value Description
CFUNCTION Trace entry to and exit from each C function in the application running on SMARTS.
CONDVAR Trace all activity in the SMARTS system related to condition variables.
MUTEX Trace all activity in the SMARTS system related to mutex.
PTHREADS Trace all activity in the SMARTS system related to pthreads.
INDEPENDENT_SOCKETS Trace generic sockets activity.
STACK_DEPENDENT_SOCKETS Trace low level stack requests.
CONTAINER_IO Trace all internal IO calls to SAGIOS (inactive for BS2000).
ALL Trace all of the above parameters.

TRACE_SYSTEM_EXCLUDE
Parameter Use Possible Values Default
TRACE_SYSTEM_EXCLUDE Specifies system trace parameters to exclude in the trace. see tables and discussion for TRACE_SYSTEM_INCLUDE none

TRACE_FUNCTION_INCLUDE
Parameter Use Possible Values Default
TRACE_FUNCTION_INCLUDE Include a specific function in the trace. function name none

The function name is case-sensitive.

A list of functions with tracing switched on is produced unless the list contains more than 50% of all functions. In that case, a list of the functions with tracing switched off is produced.

TRACE_FUNCTION_EXCLUDE
Parameter Use Possible Values Default
TRACE_FUNCTION_EXCLUDE Exclude a specific function from the trace. function name none

The function name is case-sensitive.

TRACE_GROUP_INCLUDE
Parameter Use Possible Values Default
TRACE_GROUP_INCLUDE Include a specific group of functions in the trace. see table of groups | ALL none
Value Description
ALL Switch tracing on for all functions.
TRACE_GROUP_EXCLUDE
Parameter Use Possible Values Default
TRACE_GROUP_EXCLUDE Exclude a specific group of functions from the trace. table of groups | ALL none
Value Description
ALL Switch tracing off for all functions.

Table of Tracing Groups

Group Functions
ASYNC_IO aio_cancel, aio_error, aio_fsync, aio_read, aio_return, aio_suspend, aio_write, lio_listio
DATABASE dbm_clearerr, dbm_close, dbm_delete, dbm_error, dbm_fetch, dbm_firstkey, dbm_nextkey, dbm_open, dbm_store
DEVICE grantpt, isatty, ptsname, unlockpt
FILE_
DIRECTORY
__check, access, basename, chdir, chmod, chown, chroot, close, closedir, creat, dirname, dlclose, dlerror, dlopen, dlsym, dup, dup2, fattach, fchdir, fchmod, fchown, fcntl, fdatasync, fdetach, fnmatch, fpathconf, fstat, fstatvfs, fsync, ftruncate, ftw, getcwd, getdtablesize, getwd, glob, globfree, lchown, link, lockf, lseek, lstat, mkdir, mkfifo, mknod, mkstemp, mktemp, nftw, open, opendir, pathconf, pwrite, read, readdir, readdir_r, readlink, readv, realpath, remove, rename, rewinddir, rmdir, seekdir, stat, statvfs, symlink, sync, telldir, truncate, umask, unlink, utime, utimes, write, writev, flockfile, pread, tempnam, tmpfile, tmpnam, ttyname, ttyname_r
INTER_
PROCESS_COMMS
execl, execle, execlp, execv, execve, execvp, fork, ftok, pipe
INTERNAL __aett, __eatt, __xlt, apslog, apstrace, ENVINIT, ENVTERM, EXTATTCH, EXTCDICHCK, EXTCDICNCL, EXTCDISLCT, EXTDEL, EXTDETCH, EXTFREEG, EXTFREET, EXTFSIOS, EXTGETG, EXTGETT, EXTLOAD, EXTMSG, EXTOPCMD, EXTPOST, EXTPPCBG, EXTPPCBS, EXTTRACE, EXTWAIT, EXTWAITL, hlli, SAGIOR
IO cfgetispeed, cfgetospeed, cfsetispeed, cfsetospeed, clearerr, ctermid, cuserid, delenv, fclose, fdopen, feof, ferror, fflush, fgetc, fgetpos, fgets, fgetwc, fgetws, fileno, flockfile, fmtmsg, fopen, fprintf, fputc, fputs, fputwc, fputws, fread, freopen, fscanf, fseek, fseeko, fsetpos, ftell, ftello, ftrylockfile, funlockfile, fwide, fwprintf, fwrite, getc, getc_unlocked, getchar, getchar_unlocked, getmsg, getopt, getpass, gets, getsubopt, getw, getwc, getwchar, ioctl, isastream, optarg, pclose, poll, popen, pread, printf, putc, putc_unlocked, putchar, putchar_unlocked, putmsg, putpmsg, puts, putw, rewind, scanf, select, setbuf, setvbuf, snprintf, sprintf, sscanf, stdin, system, tcdrain, tcflow, tcflush, tcgetattr, tcgetsid, tcsendbreak, tcsetattr, ungetc, vfprintf, vprintf, vsnprintf, vsprintf, putwc, putwchar, swprintf, swscanf, tempnam, tmpfile, tmpnam, ttyname, ttyname_r, ungetwc, vfwprintf, vswprintf, vwprintf, wprintf, wscanf
JUMP _longjmp, _setjmp, longjmp, setjmp, siglongjmp, sigsetjmp
LANGUAGE_
LOCALE
localeconv, nl_langinfo, setlocale
LOGGING closelog, openlog, setlogmask, syslog
MATH abs, acos, acosh, asin, asinh, atan, atan2, atanh, cbrt, ceil, cos, cosh, div, drand48, erand48, erf, erfc, exp, expm1, fabs, floor, fmod, frexp, gamma, hypot, ilogb, initstate, isnan, j0, j1, jn, jrand48, labs, lcong48, ldexp, ldiv, lgamma, log, log10, log1p, logb, lrand48, modf, mrand48, nextafter, nrand48, pow, rand, rand_r, random, remainder, rint, scalb, seed48, setstate, signgam, sin, sinh, sqrt, srand, srand48, srandom, tan, tanh, y0, y1, yn
MEMORY brk, bzero, calloc, free, getpagesize, malloc, memccpy, memchr, memcmp, memcpy, memmove, memset, mlock, mlockall, mmap, mprotect, msync, munlock, munlockall, munmap, realloc, sbrk, shm_open, shm_unlink, shmat, shmctl, shmdt, shmget, valloc, bcmp, bcopy
MESSAGES catclose, catgets, catopen, mq_close, mq_getattr, mq_notify, mq_open, mq_receive, mq_send, mq_setattr, mq_unlink, msgctl, msgget, msgrcv, msgsnd, perror, putmsg, putpmsg
MISCELLANEOUS __environ, __errno, _assert, clrenv, confstr, getenv, iconv, iconv_close, iconv_open, putenv, qsort, swab, sysconf, ualarm, uname, usleep, wordexp, wordfree
NETWORK_
SOCKETS
__h_errno, accept, bind, connect, endhostent, endnetent, endprotoent, endservent, gethostbyaddr, gethostbyname, gethostent, gethostid, gethostname, getnetbyaddr, getnetbyname, getnetent, getpeername, getprotobyname, getprotobynumber, getprotoent, getservbyname, getservbyport, getservent, getsockname, getsockopt, givesocket, htonl, htons, inet_addr, inet_lnaof, inet_makeaddr, inet_netof, inet_network, inet_ntoa, listen, ntohl, ntohs, recv, recvfrom, recvmsg, send, sendmsg, sendto, sethostent, setnetent, setprotoent, setservent, setsockopt, shutdown, socket, socketpair, takesocket
PROCESS _exit, _spawn, atexit, exit, getegid, geteuid, getgid, getgroups, getlogin, getlogin_r, getpgid, getpgrp, getpid, getppid, getsid, getuid, nice, setegid, seteuid, setgid, setpgid, setpgrp, setregid, setreuid, setsid, setuid, spawnl, spawnle, spawnlp, spawnv, spawnve, spawnvp, tcgetpgrp, tcsetpgrp, ulimit, vfork, wait, waitid, waitpid
PTHREAD pause, pthread_atfork, pthread_attr_destroy, pthread_attr_getdetachstate, pthread_attr_getguardsize, pthread_attr_getinheritsched, pthread_attr_getschedparam, pthread_attr_getschedpolicy, pthread_attr_getscope, pthread_attr_getstackaddr, pthread_attr_getstacksize, pthread_attr_init, pthread_attr_setdetachstate, pthread_attr_setguardsize, pthread_attr_setinheritsched, pthread_attr_setschedparam, pthread_attr_setschedpolicy, pthread_attr_setscope, pthread_attr_setstackaddr, pthread_attr_setstacksize, pthread_cancel, pthread_cleanup_pop, pthread_cleanup_push, pthread_cond_broadcast, pthread_cond_destroy, pthread_cond_init, pthread_cond_signal, pthread_cond_timedwait, pthread_cond_wait, pthread_condattr_destroy, pthread_condattr_getpshared, pthread_condattr_init, pthread_condattr_setpshared, pthread_create, pthread_detach, pthread_equal, pthread_exit, pthread_getconcurrency, pthread_getschedparam, pthread_getspecific, pthread_join, pthread_key_create, pthread_key_delete, pthread_mutex_destroy, pthread_mutex_getprioceiling, pthread_mutex_init, pthread_mutex_lock, pthread_mutex_setprioceiling, pthread_mutex_trylock, pthread_mutex_unlock, pthread_mutexattr_destroy, pthread_mutexattr_getprioceiling, pthread_mutexattr_getprotocol, pthread_mutexattr_getpshared, pthread_mutexattr_gettype, pthread_mutexattr_init, pthread_mutexattr_setprioceiling, pthread_mutexattr_setprotocol, pthread_mutexattr_setpshared, pthread_mutexattr_settype, pthread_once, pthread_rwlock_destroy, pthread_rwlock_init, pthread_rwlock_rdlock, pthread_rwlock_tryrdlock, pthread_rwlock_trywrlock, pthread_rwlock_unlock, pthread_rwlock_wrlock, pthread_rwlockattr_destroy, pthread_rwlockattr_getpshared, pthread_rwlockattr_init, pthread_rwlockattr_setpshared, pthread_self, pthread_setcancelstate, pthread_setcanceltype, pthread_setconcurrency, pthread_setschedparam, pthread_setspecific, pthread_testcancel, pthread_kill, pthread_sigmask
PWD_GRP_ACC endgrent, endpwent, endutxent, getgrent, getgrgid, getgrgid_r, getgrnam, getgrnam_r, getpmsg, getpwent, getpwnam, getpwnam_r, getpwuid, getpwuid_r, getutxent, getutxid, getutxline, pututxline, setgrent, setpwent, setutxent, ttyslot
REGULAR_
EXPRESSIONS
advance, compile, loc1, locs, re_comp, re_exec, regcmp, regcomp, regerror, regex, regexec, regexp, regfree, step
RESOURCES getpriority, getrlimit, getrusage, setpriority, setrlimit
SCHEDULING sched_get_priority_max, sched_get_priority_min, sched_getparam, sched_getscheduler, sched_rr_get_interval, sched_setparam, sched_setscheduler, sched_yield
SEARCH bsearch, hcreate, hdestroy, hsearch, insque, lfind, lsearch, remque, tdelete, tfind, tsearch, twalk
SEMAPHORE sem_close, sem_destroy, sem_getvalue, sem_init, sem_open, sem_post, sem_trywait, sem_unlink, sem_wait, semctl, semget, semop
SIGNAL abort, alarm, bsd_signal, kill, killpg, pthread_kill, pthread_sigmask, raise, sigaction, sigaddset, sigaltstack, sigdelset, sigemptyset, sigfillset, sighold, sigignore, siginterrupt, sigismember, signal, sigpause, sigpending, sigprocmask, sigqueue, sigrelse, sigset, sigstack, sigsuspend, sigtimedwait, sigwait, sigwaitinfo
STRING a64l, atof, atoi, atol, bcmp, bcopy, crypt, ecvt, encrypt, fcvt, ffs, gcvt, index, l64a, rindex, setkey, strcasecmp, strcat, strchr, strcmp, strcoll, strcpy, strcspn, strdup, strerror, strfmon, strftime, strlen, strncasecmp, strncat, strncmp, strncpy, strpbrk, strrchr, strspn, strstr, strtod, strtok, strtok_r, strtol, strtoul, strxfrm, -wcsftime, wcscat, wcschr, wcscmp, wcscoll, wcscpy, wcscspn, wcslen, wcsncat, wcsncmp, wcsncpy, wcspbrk, wcsrchr, wcsrtombs, wcsspn, wcsstr, wcstod, wcstok, wcstol, wcstombs, wcstoul, wcswcs, wcswidth, wcsxfrm, wcsftime
TIME asctime, asctime_r, clock, clock_getres, clock_gettime, clock_settime, ctime, ctime_r, daylight, difftime, ftime, getdate, getitimer, gettimeofday, gmtime, gmtime_r, localtime, localtime_r, mktime, nanosleep, setitimer, sleep, strptime, time, timer_delete, timer_getoverrun, timer_gettime, timer_settime, times, tzname, tzset, timer_create, strftime
USERCONTEXT getcontext, makecontext, setcontext, swapcontext
WIDE_CHAR btowc, iswalnum, iswalpha, iswcntrl, iswctype, iswdigit, iswgraph, iswlower, iswprint, iswpunct, iswspace, iswupper, iswxdigit, mblen, mbrlen, mbrtowc, mbsinit, mbsrtowcs, mbstowcs, mbtowc, putwc, putwchar, swprintf, swscanf, towctrans, towlower, towupper, wcrtomb, wctob, wctomb, wctrans, wctype, wcwidth, wmemchr, wmemcmp, wmemcpy, wmemmove, wmemset, wcscat, wcschr, wcscmp, wcscoll, wcscpy, wcscspn, wcslen, wcsncat, wcsncmp, wcsncpy, wcspbrk, wcsrchr, wcsrtombs, wcsspn, wcsftime, wcsstr, wcstod, wcstok, wcstol, wcstombs, wcstoul, wcswcs, wcswidth, wcsxfrm
XTI t_accept, t_alloc, t_bind, t_close, t_connect, t_error, t_free, t_getinfo, t_getprotaddr, t_getstate, t_listen, t_look, t_open, t_optmgmt, t_rcv, t_rcvconnect, t_rcvdis, t_rcvrel, t_rcvreldata, t_rcvudata, t_rcvuderr, t_rcvv, t_rcvvudata, t_snd, t_snddis, t_sndrel, t_sndreldata, t_sndudata, t_sndv, t_sndvudata, t_strerror, t_sync, t_sysconf, t_unbind
TRACE_OUTPUT_START_AFTER
Parameter Use Possible Values Default
TRACE_OUTPUT_START_AFTER Start putting out trace data, after the specified number of trace records have been issued. This can be used as a mechanism for reducing the number of records output if a large and unwieldy output is anticipated. Any numeric value none
TRACE_OUTPUT_STOP_AFTER
Parameter Use Possible Values Default
TRACE_OUTPUT_STOP_AFTER Stop putting out trace data, after the specified number of trace records have been issued. This can be used as a mechanism for reducing the number of records output if a large and unwieldy output is anticipated. Any numeric value none
TRACE_CFUNC_PLIST
Parameter Use Possible Values Default
TRACE_CFUNC_PLIST Specify whether C function parameter list tracing is to be active or not. YES ¦ NO NO
TRACE_CFUNC_PARMS
Parameter Use Possible Values Default
TRACE_CFUNC_PARMS Specify the formats of parameters of a paticular C function to be traced. One invocation of this keyword is required for every different C function to be traced. The number of parameters to be traced is limited to 8 and only the 1st 25 bytes of the C functions name will be traced, so programmers should try to ensure that function names are unique within those 25 bytes, to avoid ambiguous trace output. See table none
Table of C Function Parameter Tracing Options

The values for this keyword are specified as follows:

TRACE_CFUNC_PARMS=('sample_function_name',p1,p2,p3,...,p8,RET=pr)

where p1, p2 ... etc represent the formats of the parameters passed and pr represents the format of the returned value. The possible values for these variables and their meanings are listed in the table below: Variable Meaning C Character type data. S Short Integer type data. I Integer type data. L Long Integer type data. G Long Long type data. F Floating Point type data. D Double Precision Floating Point type data. U Long Double Precision Floating Point type data. P Pointer type data. V Void Pointer type data. A Variable (unknown)

Variable Meaning
C Character type data.
S Short Integer type data.
I Integer type data.
L Long Integer type data.
G Long Long type data.
F Floating Point type data.
D Double Precision Floating Point type data
U Long Double Precision Floating Point type data.
P Pointer type data.
V Void Pointer type data.
A Variable (unknown)

So the example given above may have been coded as:

TRACE_CFUNC_PARMS=(“function_passing_2ints_and_a_pointer”,I,I,V,RET=I)

SMARTS POSIX Recovery Parameters

In general, the recovery parameters are always set to YES so that threads can be cancelled when SMARTS terminates. When the recovery parameters are set to NO, SMARTS does not terminate properly.

Use the NO value only for debugging purposes when requested to do so by your Software AG technical support representative.

ABEND_RECOVERY

Important:
Use this parameter only when requested to do so by your Software AG technical support representative.

Parameter Use Possible Values Default
ABEND_
RECOVERY
Whether a recovery environment is established for a logical process in the SMARTS environment. YES | NO YES

NO means that SMARTS does not recover or cleanup when an ABEND occurs for a process.

THREAD_ABEND_RECOVERY

Important:
Use this parameter only when requested to do so by your Software AG technical support representative.

Parameter Use Possible Values Default
THREAD_ABEND_RECOVERY Whether a recovery environment is established for a pthread created in the SMARTS environment. YES | NO YES

NO means that SMARTS does not recover or cleanup when an ABEND occurs in a pthread.

SMARTS POSIX Statistics Collection Parameters

Statistics collection parameters are processed in the order in which they are entered, the last specification encountered takes precedence.

STATISTICS_INCLUDE
Parameter Use Possible Values Default
STATISTICS_INCLUDE Specifies resource to include in statistics collection. See table None

One resource may be specified per parameter. To activate more than one resource, the parameter must be specified multiple times:

STATISTICS_INCLUDE = CFUNCTION
STATISTICS_INCLUDE = CONDVAR
STATISTICS_INCLUDE = MUTEX
Value Description Default number of blocks allocated
CFUNCTION Collect statistics for C and C++ functions. 100
PFUNCTION Collect statistics for POSIX functions. 100
MUTEX Collect statistics for Mutex processing. 20
CONDVAR Collect statistics for Condition Variable processing. 20
FILE Collect statistics about file usage. 10
SOCKET Collect statistics about sockets usage. 10
STORAGE Collect statistics about storage usage. 1
ALL Collect all statistics. N/A

A number may be included on the STATISTICS_INCLUDE statement to override the default number of blocks to be allocated for the given resource:

STATISTICS_INCLUDE = CFUNCTION(200)
STATISTICS_INCLUDE = CONDVAR(10)

This feature cannot be used when STATISTICS_INCLUDE=ALL is specified. As mentioned above, the size of the SMARTS log file block/element size is determined by the storage required by the statistics blocks, which is controlled by the number of blocks allocated. The maximum length that can be specified for the log file is 32K and data will be lost if the maximum is exceeded. Use the override facility to reduce this size.

STATISTICS_EXCLUDE
Parameter Use Possible Values Default
STATISTICS_EXCLUDE Specifies resource to exclude from statistics collection. See tables and discussion for STATISTICS_INCLUDE None
STATISTICS_OPTION
Parameter Use Possible Values Default
STATISTICS_OPTION Specifies how the data will be processed when flushed from the internal buffers. See table None
LOG The data will be hardened using the SMARTS logging facility.
FORMAT The data will be formatted and written to the APSSTAF dataset.

Both options may be specified, but on separate statements.

SMARTS POSIX Miscellaneous Parameters

ASCII
Parameter Use Possible Values Default
ASCII Whether ASCII runtime conversion is on and whether a translation table is to be used.. YES | NO | (YES,tttttttt) | (NO,tttttttt) NO

SMARTS executables may be compiled as ASCII or EBCDIC executables. ASCII may be required, for example, in cases where ASCII dependencies are built into the processing algorithm(s).

tttttttt

translation table name e.g. CP1145. Applied translation tables are:

  • CP1145 (Spanish)

  • CP871 (Icelandic)

  • CP273 (German)

The ASCII parameter value must match the way the executables were built. ASCII and EBCDIC executables may not be intermixed.

C_STACK_SIZE

Important:
Use this parameter only when requested to do so by your Software AG technical support representative.

Parameter Use Possible Values Default
C_STACK_SIZE Preallocates C stack storage for internal use. 0 - 4095M 200K

Note:
The value may be indicated in bytes, in kilobytes with a "K" modifier, or in megabytes with an "M" modifier; for example, 320,000 bytes may also be specified as 320K or 32M. The C_STACK_SIZE parameter is used to preallocate a storage area for internal use.

CDI_DRIVER
Parameter Use Possible Values Default
CDI_DRIVER Defines CDI protocols to SMARTS and specifies the modules whilch implement the required functionality. see format below none

CDI driver parameters:

CDI_DRIVER=('CDIparm1')
CDI_DRIVER=('CDIparm2')
CDI_DRIVER=('CDIparm3')

A separate CDI_DRIVER parameter is required for each CDI driver you want to use. The order of CDI drivers within the parameter specification does not matter. See the section Standard CDI Definitions for more information.

Each CDI protocol driver definition takes the following form:

protocol,module,key1=value1

- where

protocol is the name of the CDI protocol being defined
module is the name of the load module implementing this CDI protocol. This load module must be accessible to the POSIX server environment.
key1..n/value1..n are keyword/value pairs specific to the CDI protocol driver.

For information about specifying the keyword/value pairs, refer to the implementation documentation for the relevant CDI protocol.

A default driver will always be loaded for the 'FILE' protocol. The driver loaded will be the default native file I/O driver for the relevant hardware platform

ENVIRONMENT_VARIABLES
Parameter Use Possible Values Default
ENVIRONMENT_VARIABLES Names the file containing global environment variable definitions for the POSIX server. file-name (see format below) no global environment variables

The file name uses URL-like notation as follows:

  • z/OS: If the file is in the PDS A.B.C member (MEMBER), specify it as

    /a/b/c/member.ext 
    

    (note that .ext is ignored)

  • VSE: If the file is Library "A", Sublibrary "B", Member "C", Member Type "D", specify it as:

    /a/b/c.d
    
  • All environments: If the file is a sequential file called X.Y.Z, specify it as

    /x/y/z/
    
FLOATING_POINT
Parameter Use Possible Values Default
FLOATING_POINT Specify whether the SMARTS environment should use the binary floating point format internally (IEEE) or the hexadecimal floating point format (HFP) IEEE|HFP Depends on support available on hardware platform

If the hardware platform where SMARTS is running does not support the required instruction set for binary floating point operations (IEEE), the FLOATING_POINT parameter value will default to HFP. The default value should only be overridden if this is explicitly instructed in a product's installation notes.

Warning:
Mixing applications with IEEE and HFP floating point arithmetic causes unpredictable results from floating point operations.
HOSTS_FILE
Parameter Use Possible Values Default
HOSTS_FILE Names the file containing the TCP/IP host name and address table. File name No host name table

The file name uses the same URL-like notation as described for the parameter ENVIRONMENT_VARIABLES.

LOAD_DLL
Parameter Use Possible Values Default
LOAD_DLL Preloads DLL executables in the batch environment only. 1-8 character DLL name none

The DLL executable name is available from the execution environment; for example, STEPLIB.

LOG
Parameter Use Possible Values Default
LOG Whether messages written to APSLOG are also written to the console. LOG | OPERATOR LOG

When OPERATOR is specified, all messages are written to both APSLOG and the operator console.

MESSAGE_CASE
Parameter Use Possible Values Default
MESSAGE_CASE Whether messages are translated to all uppercase characters before being sent to the console. UPPER | MIXED MIXED

Normally, SMARTS messages are written as a combination of upper- and lowercase characters.

MOUNT_FS
Parameter Use Possible Values Default
MOUNT_FS Specifies the mapping of file names (for example, on open function calls) to the underlying physical file container or file name. see text none

SMARTS files can be processed either directly to the underlying file system of the native operating system or to an intermediate level known as the portable file system (PFS). Access to the files within a PFS is transparent using the standard POSIX APIs.

Multiple PFS files are permitted as long as each file has a different protocol name and a different container. When using multiple PFS container files, it is necessary to indicate which physical files are to contain which logical files. The MOUNT_FS parameter is used in conjunction with the CDI_DRIVER parameter specifying the one or more PAANPFS drivers. See the section Standard CDI Definitions for more information.

The MOUNT_FS parameter has two subparameters: the first subparameter maps to the name of the PFS driver in the CDI_DRIVER parameter and the second subparameter maps to the logical file name as specified by the application program POSIX calls.

For example:

CDI_DRIVER=('PFS1,PAANPFS,CONTAINER=CIO://DD:PFS01') 
CDI_DRIVER=('PFS2,PAANPFS,CONTAINER=CIO://DD:PFS02') 
MOUNT_FS=('PFS1://','/usr/') 
MOUNT_FS=('PFS2://','/misc/')

The above parameters identify two PFS file systems: /usr files map to the physical dataset specified by PFS1 and /misc files map to the physical dataset specified by PFS2.

To refer to (open) a file in PFS01, issue

f1=open("/usr/data",...)

Any other pathnames are assumed to map to the default protocol file://, which is the native operating system file system.

MOUNT_FS is not limited to PFS filesystems. If you set up the POSIX parameters as

CDI_DRIVER=('file,PAAMFSIO') Native z/OS File I/O 
MOUNT_FS=('file://','/fs/') 

- and then issue

open("/fs/saguk/kxo/reg4/", ...) 

- you are referring to sequential dataset SAGUK.KXO.REG4 in the native filesystem.

NETWORKS_FILE
Parameter Use Possible Values Default
NETWORKS_FILE Names the file containing the TCP/IP network name table. File name No network name table

The file name uses the same URL-like notation as described for the parameter ENVIRONMENT_VARIABLES.

PROCESS_HEAP_SIZE
Parameter Use Possible Values Default
PROCESS_HEAP_SIZE Preallocates storage for internal use.   1008

Note:
The value may be indicated in bytes, in kilobytes with a "K" modifier, or in megabytes with an "M" modifier; for example, 320,000 bytes may also be specified as 320K or 32M.

The PROCESS_HEAP_SIZE parameter is used to preallocate a storage area for internal use.

PROTOCOLS_FILE
Parameter Use Possible Values Default
PROTOCOLS_FILE Names the file containing the TCP/IP protocol name table. File name No protocol name table

The file name uses the same URL-like notation as described for the parameter ENVIRONMENT_VARIABLES.

SECURITY_INTERFACE
Parameter Use Possible Values Default
SECURITY_INTERFACE Identifies the security subsystem to use. DEFAULT | ESSG | EXIT DEFAULT
Value Description
DEFAULT Default security actions are taken and no external security system is consulted. User and group database files must be provided in files "$SAG_RTS_ETC/passwd" and "$SAG_RTS_ETC/group". The files are similar to UNIX-based passwd and group files in structure.
EXIT Set security by user exit.
SERVICES_FILE
Parameter Use Possible Values Default
SERVICES_FILE Names the file containing the TCP/IP services name table. File name No services name table

The file name uses the same URL-like notation as described for the parameter ENVIRONMENT_VARIABLES.

SYSTEM_ID
Parameter Use Possible Values Default
SYSTEM_ID A name that uniquely identifies the POSIX server instance. 1-8 character string SysName

The specified string is included in all messages issued to the operator during the execution of the POSIX server (excluding some start-up and termination messages). It may also be used in the future by the POSIX server system to uniquely identify itself within a machine.

TCPIP
Parameter Use Possible Values Default
TCPIP Whether the TCP/IP interface is required. YES | NO YES

On VSE the TCP/IP interface is always initialized by default. Specify TCPIP=NO in order to disable it.

UNSUPPORTED_FUNCTION_LIST

Important:
Use this parameter only when requested to do so by your Software AG technical support representative.

Parameter Use Possible Values Default
UNSUPPORTED_
FUNCTION_LIST
Whether a list of unsupported functions is written during startup. YES | NO NO
VSE_PRINTER_SYSNO
Parameter Use Possible Values Default
VSE_PRINTER_SYSNO Optional. Specifies the "cuu" of the VSE printer to be assigned for SYSLST. 000-FFF FEE
ZAP_LIST

Important:
Use this parameter only when requested to do so by your Software AG technical support representative.

Parameter Use Possible Values Default
ZAP_LIST Whether a list of applied ZAPs is written during startup. YES | NO NO

When YES is specified, a message is written to the log for each ZAP that has been correctly applied.

Standard CDI Definitions

SMARTS provides a number of standard definitions for communication driver interfaces (CDIs) to cover a standard set of functionality in each given environment.

Support for Console Processing (All Environments)

Support for console processing may be activated in any SMARTS environment using this CDI driver.

This driver may be activated using the following CDI driver definition:

CDI_DRIVER=('CONSOLE,PAANCNIO')

There are currently no parameters for this CDI driver.

Support for IBM z/OS File Subsystem

Support for IBM z/OS File Subsystem may be activated for z/OS only using this CDI driver.

The driver may be activated using the following CDI driver definition:

CDI_DRIVER=('file,PAAMFSIO,BLKSIZE=<nnnnn>,LRECL=<nnnnn>,
RECFM=<fm>,VOLSER=<vvvvvv>,PRIMARY=<nnnn>,SECONDARY=<nnnn>,
DIRECTORY=<nnnn>,PAD=<xxxxx>')

The following table describes the use of the configuration parameters this driver supports:

Parameter Use Possible Values Default
BLKSIZE Optional. Specifies the default block size to be used for a dataset created by this driver, if it is otherwise unspecified. user-configurable 4096
LRECL Optional. Specifies the default logical record length to be used for a dataset created by this driver, if it is otherwise unspecified. user-configurable 4092
RECFM Optional. Specifies the default record format to be used for a dataset created by this driver, if it is otherwise unspecified. F, FB, FBA, U, V, VB, VBA VB
VOLSER Optional. Specifies the volume serial number of the default disk pack on which to place a dataset created by this driver, if it is otherwise unspecified. user-configurable Site specific
PRIMARY Optional. Specifies the default primary quantity value, in cylinders, to be allocated for a dataset created by this driver, if it is otherwise unspecified. Refer to IBM documentation on the DD statement SPACE parameter for more details on the primary quantity value. user-configurable 1
SECONDARY Optional. Specifies the default secondary quantity value, in cylinders, to be used for a dataset created by this driver, if it is otherwise unspecified. Refer to IBM documentation on the DD statement SPACE parameter for more details on the secondary quantity value. user-configurable 1
DIRECTORY Optional. Specifies the default number of directory blocks to be allocated for a PDS created by this driver, if it is otherwise unspecified. Refer to IBM documentation on the DD statement SPACE parameter for more details on the directory value. user-configurable 10
PAD Optional. In the case of writing to a dataset of Fixed record length, it may be necessary to pad out records with a padding character. This parameter may be used to specify the padding character. SPACE, NULL NULL
Support for IBM VSE File Subsystem

Support for the IBM VSE file subsystem may be activated for VSE only using this CDI driver.

The driver may be activated using the following CDI driver definition:

CDI_DRIVER=('FILE,PAVVFSIO', BLKSIZE=<nnnnn>,LRECL=<nnnnn>,
RECFM=<fm>,PAD=<xxxxx>)

The following table describes the use of the single configuration parameter this driver supports:

Parameter Use Possible Values Default
BLKSIZE Optional. Specifies the default block size to be used for a dataset created by this driver, if it is otherwise unspecified. user-configurable 3200
LRECL Optional. Specifies the default logical record length to be used for a dataset created by this driver, if it is otherwise unspecified user-configurable 80
RECFM Optional. Specifies the default record format to be used for a dataset created by this driver, if it is otherwise unspecified. F, FB, FBA, U, V, VB, VBA FB
PAD Optional. In the case of writing to a dataset of Fixed record length, it may be necessary to pad out records with a padding character. This parameter may be used to specify the padding character. SPACE, NULL NULL
Support for FSC BS2000 File Subsystem

Support for Fujitsu Siemens Computers BS2000 File Subsystem may be activated for BS2000 using one of two CDI drivers.

For the main file subsystem use:

CDI_DRIVER=('file,PA2MFSIO')

For the shared file subsystem use:

CDI_DRIVER=('file,PA2SFIO,SIOTSK=<xxxxx>’)

SIOTSK is a mandatory field for the shared file IO task and needs to be assigned a user-configurable name.

Support for the Portable File System (z/OS)

Access to the files within a portable file system (PFS) is transparent using the standard POSIX APIs after it has been properly implemented.

Define the CIO CDI driver to support PFS:

CDI_DRIVER=('CIO,PAANCIO')

Multiple PFS files are permitted as long as each file has a different protocol name and a different container.

Allocate a container to store each PFS:

LRECL=BLOCKSIZE=4096

Completely initialize the container to contain x'00's.

Reference each container by a DDNAME in the JCL.

Establish a CDI driver for each container/PFS. For example:

CDI_DRIVER=('PFS1,PAANPFS,CACHESIZE=2000,LRECL=4096,CONTAINER=CIO://DD:PFS01')
CDI_DRIVER=('PFS2,PAANPFS,CACHESIZE=4000,LRECL=32768,CONTAINER=CIO://DD:PFS02')

Note that both drivers in the example specify the same module (PAANPFS) but different protocol names. The protocol name (PFSnn in the example) is a user-defined name up to 8 characters in length.

CACHESIZE

The CACHESIZE subparameter is used to specify the number of records (4k blocks) that will be cached on platforms whose underlying IO is based on the Container IO model. (All supported platforms except BS2000). There is an overhead associated with specifying this parameter and so it should only be used on containers for which a large volume of IO is anticipated. Generally the bigger the cachesize, the greater the reduction in physical IOs, but as this value is increased, the law of diminishing returns will apply, so users will have to experiment to determine the appropriate value for specific containers in a particular application environment.

LRECL

The LRECL subparameter is used to define the logical record size the application will see when using this container. It is possible to greatly reduce the number of IOs to a device by specifying this value to be equal to the size at which the application typically does its IO at. e.g. if an application routinely issues 8k IOs to a particular container, the number of physical IOs can be almost halved by specifying an LRECL subparameter of 8192 for the CDI driver defining the protocol for that container. The LRECL subparameter is actioned when the container is first initialized, so modifying the value after that point will have no effect. The value specified must be an integral multiple of the physical container LRECL (4k).

Map each container/PFS to a 'file system'. That is, identify the mapping files, directories, and subdirectories to the containers/PFSs. For example:

MOUNT_FS=('PFS1://','/registry/')
MOUNT_FS=('PFS2://','/tamino/')

In the above example, all pathnames beginning in /registry/ are mapped to the container/PFS defined by the protocol PFS1 and all pathnames beginning in /tamino/ are mapped to the container/PFS defined by the protocol PFS2. All other pathnames are mapped to the default protocol, which is

file://

- that is, the standard z/OS file I/O.

Support for the Portable File System (VSE)

The PFS options for VSE are the same as for z/OS. Please also document that PFS uses a default LRECL etc. of 32K specifically for TAMINO. Other applications should reduce the LRECL to 4096 or 8192 as this saves dead space in the PFS when short blocks are being written and ALSO save storage at run-time.

Support for IBM OE TCP/IP Stack (z/OS)

Support for IBM OpenEdition TCP/IP may be activated for z/OS only using this CDI driver.

The driver may be activated using the following CDI driver definition:

CDI_DRIVER=('TCPIP,PAAOSOCK)

Notes:

  1. The userid where the job is running must have an OE segment defined.
Support for TCP/IP Stacks on z/VSE

APS 3.3.1 including fixpack 15 is the minimum level required for TCP/IP support

Which TCP/IP stack shall be used must be specified in the Smarts JCL:

// OPTION SYSPARM='NN' /* NN = stack ID 

In order to use the Barnard Software (BSI) stack, LIBDEF PHASE must include the BSI sublib. (The CSI phases are located in PRD1.BASE which must be present anyway.)

Support for Inter Process Communications Pipes (All Environments)

Support for pipes and named pipes may be activated for all environments using this CDI driver.

The driver may be activated using the following CDI driver definition:

CDI_DRIVER=('pipe,PAANPIO,BLKSIZE=<nnnn>,NBLKS=<bbbb>')

The following table describes the configuration parameters this driver supports:

Parameter Use Possible Values Default
BLKSIZE Optional. Defines the internal block size used by the driver in bytes. This is the size of each storage buffer allocated by the driver for storing pipe data in. The buffers are chained up to the maximum of <bbbb> entries. User-configurable 4096
LIMIT Optional. Defines the maximum number of storage buffers to be allocated for any open pipe descriptor. User-configurable 128

Under normal circumstances, no configuration parameter should be required. Use these only when directed to do so by Software AG's support personnel.

Notes:

  1. Named pipes can only be supported when associated with a mounted PFS container. They are not supported on native file systems.
  2. Normal (unnamed) pipes are not dependent on any file system.