Application Development |
This appendix describes utilities that are useful in the development process:
Converts binary files into C data structures
bin2c [-fluv]asciiFile
inputFile
...
-f
- Overwrite an existing output file.
-l
- Convert filenames sent to output to lower case.
-u
- Make array of unsigned chars instead of chars.
-v
- Generate list of files processed.
asciiFile
- Name of the output file.
inputFile
- Name of the input file.
bin2c
converts Panther binaries—such as screens, menus, and JPL modules—into C character arrays. Whenbin2c
creates the ASCII C file, it generate an array for each of the input files. An array in the file has one of these two forms:char inputFile[] = { contents of file };
unsigned char inputFile[] = { contents of file };where
inputFile
is the name of the source binary file with its path and extension stripped off. If you use the -l option,inputFile
is converted to lower case.Files created with
bin2c
arrays can be compiled, linked with your application, and added to the memory-resident form list with sm_formlist. For more information on memory-resident lists, refer to this function and to page 42-8. The following files can be made memory-resident:
You cannot convert a file back to its original binary form after using bin2c. Panther provides other utilities that permit two-way conversions between binary and ASCII formats. For screens, these utilities are bin2hex and f2asc.
Converts binary screens to hexadecimal ASCII file
bin2hex -c[flv]asciiFile
screen
...bin2hex -x[flv]asciiFile
-c
- Create an ASCII file from one or more screens.
-f
- Overwrite an existing file.
-l
- Convert filenames in output to lower case.
-v
- Generate list of files processed.
-x
- Extract all screens contained in an ASCII source; selective extraction is not supported.
asciiFile
- Specifies the name of the ASCII output file or ASCII input file if using the -x option.
screen
- Name of a screen to convert to hexadecimal.
bin2hex
converts binary files to and from hexadecimal to let you port Panther screens across different systems. By default, the screen editor creates binary screen files.With the -c option, all named binary input files (
screen
) are converted to hexadecimal ASCII and added toasciiFile
. Path names are stripped off; extensions are left intact. With the -x option,bin2hex
extracts each screen in the specifiedasciiFile
and puts each file, in binary format, in the current directory.Selective extraction of screens from
asciiFile
is not supported. Only one argument is supported with the -x option; additional arguments are ignored.
Updates screens and reports with inherited property values from repositories
binherit [ -rrepository
] [ -v level ] [ -u ] -llibrary
[libMember
...]
-l
library
- Name of the library from which to read for updating all members or individual library members (
libMember
).-r
repository
- Name of the repository from which to inherit. If not specified,
binherit
checks the value of SMDICNAME. If the variable is not set, the utility seeks a repository nameddata.dic
in the current directory and along SMPATH. If unable to find the repository, an error is issued.-u
- Update the screens/reports as well as listing the differences.
-v
level
- Specify level of detail to report:
0
: No reporting,1
: List screens as they are processed (the default setting),2
: List screens and widgets as they are processed,3
: List screens, widgets, and properties as they are processed.
binherit
opens the named library and searches all or specified library members for widgets having the Inherit From property set to a repository entry in the open repository, for example,titles!title_id
. For those widgets, it compares the inherited property values with the values in the repository. The properties that have inheritance disabled are ignored.If the screen's Inherit From property is set, it compares the values in the inherited screen properties with the corresponding values in the repository.
If the
-u
option is specified, it updates the file with the repository value; however, this option will be ignored for members of libraries that can only be opened read-only.
The following table describes possible errors, their causes, and the corrective action to take:
Converts configuration map files to binary
cmap2bin [-pv] [-eext
]mapFile
...
- -e
ext
- Use the specified
ext
extension in the output file name instead of the defaultbin
extension.-p
- Place the output file in the same directory as the input file.
-v
- Generate a list of files processed.
mapFile
- Name of ASCII configuration map file; more than one input file can be specified.
cmap2bin
converts one or more ASCII configuration map files to a binary format for use by Panther.
cmap2bin
automatically appends the binary file name with thebin
extension unless you specify a different extension with the-e
option. It places the binary output file in the directory where you run the utility unless you use the-p
option.
The following table describes possible errors, their cause, and the corrective action to take:
Converts screens, service components and reports between binary and ASCII format
f2asc -a[cfn] [-iheaderFile
]asciiFile
binaryFile
...
f2asc -b[f]asciiFile
-a
- Create ASCII listing of one or more screens, service components and/or reports.
-b
- Extract all binary files (screens, service components, reports) from an ASCII listing. This option does not accept an output filename.
-c
- Do not generate comment lines (
-a
option only).-f
- Overwrite an existing file.
- -i
headerFile
- Include specified
headerFile
at beginning of ASCII output.-n
- Do not sort PI edits in the ASCII file (backwards compatibility option).
asciiFile
- With
-a
option, name of the file to receive ASCII version ofbinaryFile
. With-b
option, name ASCII file to convert back to binary format.binaryFile
- Filename of screen, service component or report to convert to ASCII.
f2asc
lets you create an ASCII listing of the contents of a screen, service component or report (-a
option); and convert it back to binary format using the-b
option. The editor creates and uses binary files only.With
-a
, you must specify the name of at least one screen/component/report (or use wildcard characters). With-b
, names are ignored. The-b
option automatically extracts all files from the specifiedasciiFile
.f2asc
is typically used for documenting applications. It is also useful for editing tasks that are best performed by text editors—for example, global search and replace operations.
The text file generated by
f2asc
describes the contents of the screen, service component or report—the widgets that compose it and their respective properties. It is broken into sections by object type, starting with the screen/component/report itself, and identifies the object by name, if it has one. Subsequent statements in the section describe each object through attribute keywords.
A:
layoutAreaName
- A layout area in a report.
B:
widgetName
- A non-field widget: box, line, grid, graph, report area or tab deck.
C:
logicalKey
- Identifies a logical key that is associated with a control string. The subsequent
ACTION
statement contains the control string itself.F:
fieldName
- The name of a field (including text, check box, push button, link, dynamic label, and dynamic output widgets).
G:
groupName
- Selection group.
I:
- Service component's interface definition.
L:
staticLabelName
- Static label.
P:
splitterName
- Information about a splitter and the panes it contains.
R:
reportName
- Name of the report. All report files begin with this entry.
S:
screenName
- Name of the screen. All screen files begin with this entry.
T:
tableViewName
- Table view widget.
Y:
syncGroup
- Synchronized scrolling group.
Comment lines begin with a pound (
#
) character. For example:
# NUMBER=1
Two types of expressions are used to specify the properties:
- A boolean expression is a string that sets a property to be on or off; its absence implicitly sets the same property to the opposite value. For example,
CIRCULAR
specifies that an array's circular property is set toPV_YES
; its absence means that circular is set toPV_NO
. The following statements contain two boolean expressions: the first sets a widget'sautotab
property toPV_NO
; the second sets itsinput_protection
property toPV_YES
:
NO-AUTOTAB
PROTECTED FROM DATA-ENTRY- An assignment expression explicitly assigns a value to a property. For example, the following statements assign values for several widget Geometry properties:
LENGTH=15 ARRAY-SIZE=5 VERT-DISTANCE=1
MAX-LENGTH=255 SHIFT-INCR=8
There are two types of keywords describing object properties, flags and values:
- A flag keyword is by itself and requires no other information—for example the
NUMERIC
keyword represents the numeric field type property and needs no value. A flag keyword can appear on the same line as other keywords.
Creates and maintains libraries and repositories
formlib -c [-fluv]library
[filename
...]formlib -r [-luv]library
filename
[filename
...]formlib -x [-fluv]library
[memberName
...]formlib -{d|t} [-luv]library
[memberName
...]formlib -{e|i|m|o|s|w|z} [-v]library
formlib -gcfgStr
[-v]library
-c
- Create a new library/repository that optionally contains the files named (
filename ...
). If no files are specified, an empty library is created.-d
- Delete the named members from the library/repository.
-e
- Configure the library/repository for external file locking.
-f
- Overwrite a library member or repository entry.
-g
cfgStr
- Define a configuration management string; begins with the name of your configuration management system—either
sccs
,pvcs
orscpi
(in lower case). For information about source control management options, refer to page 10-5.-i
- Configure the library/repository for internal (operating system) file locking.
-l
- Convert filenames to lowercase before processing.
-m
- Compact the library by removing unused space. The original library is kept as
libname.old
. The compacted library will have read-write permissions and be configured to use internal file locking.-l
- Convert filenames to lowercase before processing.
-o
- Configure the library/repository to be read-only. This operation is not reversible unless the library is compacted using
formlib
's-m
option.-r
- Replace/add the named files to the library/repository.
-s
- Synchronize the specified library with the source code management directory.
-t
- Generate a list of the library/repository contents.
-u
- Convert filenames to uppercase before processing.
-v
- Display information in verbose mode. Generates a list of files processed. When used in conjunction with the
-t
option, produces a detailed listing of the library contents.-w
- Upgrade a JAM library/repository to Panther format.
-z
- Attempt to recover deleted library members. Since the library code reuses the areas allocated to deleted library members before allocating new space, this operation should be performed as soon as possible after a member is deleted in error.
filename
- Name of file to be included in library or repository.
library
- Name of library/repository.
memberName
- Name of library member or repository entries.
formlib
lets you create and maintain libraries/repositories in which you store application components, such as screens, menus, and JPL files. You can store ASCII files in a Panther library; however, only binary files are accessible at runtime or through the screen editor.
formlib
can also be used to maintain and get information about libraries and repositories; for example, you can put a library/repository under source management control, or get a list of its contents.File specifications can include any wildcard or pattern-matching symbols that are valid for your operating system. For example, this command puts all files with the .
rpt
extension into the libraryscreens.lib
:formlib -c screens.lib *.rptLibrary member specifications must be explicit; no wildcards can be used.
The
-l
and-u
options are useful for operating systems like UNIX that are case-sensitive. For example, the following UNIX command creates the librarynew.lib
and adds all .scr
files in the current directory to it; all files receive lowercase names—for example,MAIN.SCR
becomesmain.scr
.formlib -cl new.lib *.[Ss][Cc][Rr]
Access to libraries requires both read and write locking. Locking of libraries is unrelated to source control management, as the latter affects access to individual library members (and their archived versions) during development, whereas the former controls access on an as-needed basis to the library file as a unit during development and at runtime.
Libraries require write locks to provide exclusive access during the brief moments when a library is being written to. Read locks allow others to read from the library, but prevent the library from being written to while it is being read. Read-only libraries that have been marked so (via the
-o
option) do not need any locking at all since they cannot be written to under any circumstances.You can configure a library to use either of two file-locking schemes. By default, the internal (native operating system) file locking system is used. Use the
-e
option to use an external locking scheme. External locking can be used if internal locking is not available in your environment. It creates an empty exclusive-access file calledlibname.jlk
to implement write locking, and keeps a count of the current readers in a shared read lock file calledlibname.rlk
. The .jlk
and .rlk
files are created in the same directory as the library. They are checked or modified when access to the library is attempted. The write lock file is deleted when access is completed; the read lock file is not. Also, the library is marked so that it knows to use external locking. Use the-i
option to clear the external locking mark in the library, so that it will henceforth use internal locking.Though external locking is portable, it has two drawbacks that make internal locking the preferable choice where available. First, it tends to be slower than internal locking. Secondly, if processes die abruptly—due to signals, operator intervention, and so on—write lock files can be left hanging around, or read locks can have counts that never go to zero. This impedes further access until a recovery procedure (stop all processes, delete the lock files) is performed. With internal locking, the operating system automatically performs clean up when processes die unexpectedly.
By default, libraries are created to use internal file locking. However, if a library is created on a platform where internal locking is not available, locking defaults to external. On such platforms, attempts to set internal locking are ignored. External locking might be necessary in cross-platform network environments where the network locking facilities are inadequate. Refer to your operating system's installation notes for further information about which file locking scheme is used on your platform and/or network environment.
Use of the
-o
option makes a library read-only. This is not a reversible operation unless the library has been compacted using the-m
option.When the read-only operation is not reversible, in order to write to a read-only library, you have to create a new library, extract the members from the read-only library, and move them into the new library. Read-only libraries generally provide quicker access.
Library copies of screens can become unsynchronized with source management directories. This can happen if screens are extracted and edited directly with the source code management tool as opposed to using the screen editor interface to check screens in and out.
Run
formlib
with the-s
option to ensure that your libraries are synchronized with the source management directory. The specified library is moved to a new library with the same name, but with a .jbl
(backup library) extension, and a new library is created, having the name of the original library. Any screens that were not under source code management are copied from the backup library to the new library. Screens that were under source management, but were checked out whenformlib
was executed are also copied from the backup library to the new library.All screens that are under source code management and checked-in when
formlib
was executed are copied from the source code management directory to the new library. In this way, you can be assured that your libraries contain the latest revisions before distributing your libraries.
Converts JIF between binary and ASCII format for JetNet and Oracle Tuxedo applications
jif2asc -a [-fp]ascJIF binJIF
jif2asc -b [-fp]ascJIF binJIF
-a
- Create ASCII JIF named
ascJIF
from specified binarybinJIF
.-b
- Create binary JIF named
binJIF
from specifiedascJIF
.-f
- Overwrite an existing file.
-p
- Write the output file to the directory containing the input file.
ascJIF
- Name of ASCII JIF to be converted or created.
binJIF
- Name of binary JIF to be converted.
JetNet and Oracle Tuxedo applications require a binary JIF for execution. In the JIF editor, the JIF is saved as binary. The
jif2asc
command-line utility lets you convert a JIF between ASCII and binary formats.Both input and output files must be named, there is no default naming convention. The output file is created in the current directory, unless the -p option is used to indicate that the output file is to be written in the same directory as the input file.
An attempt to overwrite an existing file without using the
-f
option produces an error message and no file is written.
Converts JPL modules between binary and ASCII formats
jpl2bin -a [ -fpv] [ -eext
]binary
...jpl2bin -b [ -rfpv] [ -eext
]textFile
...jpl2bin -sbinary
...
-a
- Convert compiled JPL to source (default extension is *.
jpl
).-b
- Compile JPL from source to binary format (default extension is *.
bin
).-e
ext
- Replace the default bin extension with the specified extension
ext
on the binary output filename. There should be no space between the -e switch and the extension name. To omit an extension, supply a value of-
(dash) forext
; i.e.-e-
.-f
- Permit the output file to overwrite an existing file.
-p
- Output the binary file to the same directory as input file.
-r
- Exclude source from compiled binary. Useful for removing source from a production distribution. However, without the source, the module cannot be edited within the screen editor.
-s
- Strip source from the compiled binary (overwrites input).
-v
- List the name of each file as it is processed.
binary
- Name of the compiled JPL file.
textFile
- Name of the source text file.
jpl2bin
lets you compile JPL modules before storing them in a library or before making them memory-resident. Under UNIX, runjpl2bin
from the command line; under Windows, choose thejpl2bin
icon or run it from a command prompt; makefile or batch file.Note: Panther always performs colon preprocessing at runtime; therefore, a module is fully compiled only when it executes.
jpl2bin
saves the module to a file of the same name with a *.bin
extension, unless you specify a different extension.
Converts menu files between binary and ASCII formats
m2asc -a [ -fv ] [ -iincludeFile
]asciiFile
menuFile
[menuFile
...]m2asc -b [ -fv ]asciiFile
[asciiFile
...]
-a
- Convert specified binary menu files to ASCII.
-b
- Convert the specified ASCII files to binary.
-f
- Overwrite an existing file.
-i
includeFile
- Include specified
includeFile
at the beginning of ASCII output.-v
- Generate a list of files as they are processed.
asciiFile
- Name of ASCII file as output with
-a
or as input file input with-b
.menuFile
- Name of binary menu file (as extracted with formlib utility).
The
m2asc
utility lets you convert binary menu files to ASCII and vice versa. You must extract the menu file from its library with the formlib utility before usingm2asc
.ASCII menu definitions define a menu as a hierarchy, where the top-level menu and its items are defined first along with global menu properties, followed by submenus and their items. Each component of a menu definition is identified by a keyword (refer to Table A-1 and, optionally, a unique name.
Each menu and menu item definition has properties; these properties are specified immediately below the component's identifier. For example, the following statements define a submenu item
myoption
: its label isOptions
with a keyboard mnemonic ofO
; it invokes the menumyoptionsub
; and it is initially available for selection (ACTIVE=YES
):SUBMENU:myoption
LABEL=&Options
SUBMENU=myoptionsub
ACTIVE=YESRefer to Table 15-1 for a list of menu-specific properties.
The following menu script is the ASCII output of a truncated version of the menu bar used by Panther's screen editor. The example includes two of the main menu options and their associated submenus:
File
andHelp
.FILE:semain
MENU:sm_se_main_menu
ACTIVE=YES
INDICATOR=NO
SHOW-ACCEL=YES
ACCEL-ACTIVE=YESSUBMENU:sm_se_file
LABEL=&File
SUBMENU=sm_se_file_menu
EXT-HELP-TAG=basicFilemenu
STAT-TEXT=File OperationsSUBMENU:sm_se_help
LABEL=&Help
SUBMENU=sm_se_help_menu
IS-HELP=YES
STAT-TEXT=Get Help!MENU:sm_se_file_menu
TEAR=NO
EXTERNAL=NO
ACTIVE=YES
INDICATOR=NO
SHOW-ACCEL=YES
SEP-STYLE=SINGLESUBMENU:sm_se_new
LABEL=&New
SUBMENU=sm_se_new_menu
IS-HELP=NO
EXT-HELP-TAG=FileNew
STAT-TEXT=Create new screenSUBMENU:sm_se_open
LABEL=&Open
SUBMENU=sm_se_open_menu
IS-HELP=NO
EXT-HELP-TAG=FileOpen
STAT-TEXT=Open existing screenACTION:sm_se_save
LABEL=&Save
CONTROL=^jm_keys PF5
ACTIVE=YES
IS-HELP=NO
EXT-HELP-TAG=FileSave
ACCEL=PF5
ACCEL-ACTIVE=NO
SHOW-ACCEL=YES
DISPLAY-ON=BOTH
STAT-TEXT=Saves the current screen
ORDER=18
ACTIVE-PIXMAP=save-act
INACTIVE-PIXMAP=save-dis
TOOL-TIP=SaveACTION:sm_se_set_test
LABEL=&Test Mode
CONTROL=^jm_keys PF2
IS-HELP=NO
EXT-HELP-TAG=FileTestMode
ACCEL=PF2
ACCEL-ACTIVE=NO
SHOW-ACCEL=YES
DISPLAY-ON=BOTH
STAT-TEXT=Switch to Test Mode
ORDER=19
ACTIVE-PIXMAP=test-act
TOOL-TIP=Test ModeSEP:sm_se_file_sep2
SEP-STYLE=SINGLEACTION:sm_se_exit
LABEL=E&xit
CONTROL=^jm_keys CLAPP
ACCEL=CLAPP
IS-HELP=NO
EXT-HELP-TAG=FileExit
ACCEL-ACTIVE=NO
SHOW-ACCEL=YES
STAT-TEXT=Exit the editorMENU:sm_se_new_menu
TEAR=NO
EXTERNAL=NO
ACTIVE=YES
INDICATOR=NO
SHOW-ACCEL=YES
SEP-STYLE=SINGLEACTION:sm_se_new_screen
LABEL=&Screen
CONTROL=^filemenu new screen
IS-HELP=NO
EXT-HELP-TAG=FileNew
SHOW-ACCEL=YES
DISPLAY-ON=BOTH
STAT-TEXT=Creates new untitled screen
ORDER=11
ACTIVE-PIXMAP=new-act
INACTIVE-PIXMAP=new-dis
TOOL-TIP=New ScreenACTION:sm_se_new_jpl
LABEL=&JPL
CONTROL=^filemenu new jpl
IS-HELP=NO
EXT-HELP-TAG=FileNew
SHOW-ACCEL=YES
STAT-TEXT=Creates new jplACTION:sm_se_new_dd_entry
LABEL=Repository &Entry...
CONTROL=^filemenu new ddentry
IS-HELP=NO
EXT-HELP-TAG=FileNew
SHOW-ACCEL=YES
STAT-TEXT=Create new repository entryACTION:sm_se_new_lib
LABEL=&Library...
CONTROL=^filemenu new lib
IS-HELP=NO
EXT-HELP-TAG=FileNew
SHOW-ACCEL=YES
STAT-TEXT=Create a new libraryMENU:sm_se_open_menu
TEAR=NO
EXTERNAL=NO
ACTIVE=YES
INDICATOR=NO
SHOW-ACCEL=YES
SEP-STYLE=SINGLEACTION:sm_se_op_lib
LABEL=&Library...
CONTROL=^filemenu open lib
IS-HELP=NO
EXT-HELP-TAG=FileOpen
SHOW-ACCEL=YES
STAT-TEXT=Open libraryACTION:sm_se_op_db
LABEL=D&atabase...
CONTROL=^dm_handle_connect 1
ACTIVE=NO
IS-HELP=NO
EXT-HELP-TAG=FileOpen
SHOW-ACCEL=YES
STAT-TEXT=Open databaseMENU:sm_se_help_menu
TEAR=NO
EXTERNAL=NO
ACTIVE=YES
INDICATOR=NO
SHOW-ACCEL=YES
SEP-STYLE=SINGLEACTION:sm_se_hl_topic
LABEL=Current &Topic ...
CONTROL=^jm_keys HELP
IS-HELP=NO
STAT-TEXT=Shows help on what you're doing
ORDER=191
DISPLAY-ON=BOTH
ACTIVE-PIXMAP=help-act
INACTIVE-PIXMAP=help-dis
TOOL-TIP=HelpSEP:sm_se_hl_sep1
SEP-STYLE=SINGLE
ORDER=190
DISPLAY-ON=BOTHACTION:sm_se_hl_about
LABEL=&About Panther ...
CONTROL=^sm_message_box( \
"Panther Version 5.5%NCopyright 1994-2016%NProlifics Inc.", \
"About Panther",0,"")
STAT-TEXT=Tells about this version of Panther
Converts ASCII message files to binary format
msg2bin [-pv] [-eext
]msgFile
...msg2bin [-pv] [-ofile
]msgFile
...
- -e
ext
- Replace default
bin
extension on the output file with the given extension (ext
). If the-o
option is used,-e
is ignored.- -o
file
- Output is placed in a single specified file. Use this option to concatenate your user messages to Panther-messages in a single binary file. This option will overwrite an existing binary message file of the same name.
-p
- Place each binary output file in the same directory as the corresponding input file.
-v
- List the name of each input message file as it is processed.
msgFile
- Name of ASCII file containing named messages. More than one input file can be specified.
msg2bin
converts ASCII message files to a binary format for use by Panther library functions. The output ofmsg2bin
is a binary file; the utility uses theTAGs
to distinguish between system and user messages. It numbers user-defined messages consecutively starting with the class number times0x1000
(see page 45-7 for more about defining user message classes). If no classes are defined, user-defined messages are automatically numbered consecutively starting from zero; the definitions of system messages are taken fromsmerror.h
. Be sure to maintain the order of messages and the assignment of their identifiers. Use these identifiers in the application programs to select the desired messages at runtime. Then recompile and link any non-JPL source that includes any files that contain newly defined messages.
The following table describes possible errors, their cause, and the corrective action to take:
Creates header files for user messages
msg2hdr [-dfjpv] [-nnum
] [-spfix
] [-xpfix
] [-ofile
] [-eext
]msgFile
...
-d
- Decimal base in the output header file. Default is base
16
(hexadecimal).- -e
ext
- Replace default extension (
h
orjpl
) on the output file with the specified extensionext
.-f
- Output file may overwrite an existing file.
-j
- Create a JPL global variable file from
msgFile
.-n
num
- Start numbering messages with the specified num for the first #define or global. If no number is entered,
0
(zero) is used.-o
file
- Direct output to the named file.
-p
- Place output file in the same directory as the corresponding input file.
-s
pfix
- Select only message names beginning with the specified prefix
pfix
.-v
- Generate list of the files processed.
-x
pfix
- Prepend the specified prefix
pfix
to the tag portion of the message.msgFile
- Name of ASCII file containing your application's messages.
msg2hdr
converts an ASCII message file that contains your application's messages to a C header file. The output ofmsg2hdr
is a.h
file with#define
statements for each user message tag. The messages are numbered sequentially starting with0x0
to0xF
. The message portion is copied to the header file as a comment.For example, a user message file with multiple sections might look like this:
"U0" = 0
U0_BADVAL = Bad value
U0_WRONGDATE = Date must be within 30 days of current date
"U1" = 1
WRONGRATE = This is not the applicable rateThis yields the following output:
#define U0_BADVAL 0x0 /* Bad value */
#define UO_WRONGDATE 0x1 /* Date must be within 30 \
> days of current date */
#define WRONGRATE 0x1000 /* This is not the \
> applicable rate */If you use the -j
option,msg2hdr
yields this output:global U0_BADVAL(1) = 0 /* Bad value */
global U0_WRONGDATE(1) = 1 /* Date must be within 30 \
> days of current date */
global WRONGRATE(4) = 4096 /* This is not the \
> applicable rate */
The following table describes possible errors, their causes, and the corrective action to take:
Converts styles files between binary and ASCII formats
s2asc -a [-f]asciiFile
styles.stys2asc -b [-f]asciiFile
-a
- Create ASCII listing of
styles.sty
. The styles file must be namedstyles.sty
.-b
- Create a binary style file from an ASCII listing. The name of the binary file corresponds to the name specified in the
s:name
option in the ASCII file. To have this binary file accessed by your application, change the name of the file tostyles.sty
.-f
- Overwrite an existing
styles.sty
file.asciiFile
- With the
-a
option, name of the file in which to place the ASCII styles settings. With the-b
option, name of the file containing ASCII text for conversion to binary format.
The
s2asc
utility must be executed from the command line. With the utility, you can convert yourstyles.sty
file between binary and ASCII format. After converting an ASCII file to binary withs2asc
, use formlib to put it in the appropriate library. You might do this in order to place the file under source control management or to document or review the contents of the file.The text files generated by
s2asc
contain a list of the property settings for each style, followed by a list of the styles assigned to each class.