![]() | Application Development | ![]() |
This appendix describes utilities that are useful in the development process:
Converts binary files into C data structures
bin2c [-fluv]asciiFileinputFile...
-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.
bin2cconverts Panther binaries—such as screens, menus, and JPL modules—into C character arrays. Whenbin2ccreates 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
inputFileis the name of the source binary file with its path and extension stripped off. If you use the -l option,inputFileis converted to lower case.Files created with
bin2carrays 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]asciiFilescreen...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.
bin2hexconverts 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,bin2hexextracts each screen in the specifiedasciiFileand puts each file, in binary format, in the current directory.Selective extraction of screens from
asciiFileis 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...]
-llibrary- Name of the library from which to read for updating all members or individual library members (
libMember).-rrepository- Name of the repository from which to inherit. If not specified,
binheritchecks the value of SMDICNAME. If the variable is not set, the utility seeks a repository nameddata.dicin 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.
-vlevel- 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.
binheritopens 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
-uoption 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
extextension in the output file name instead of the defaultbinextension.-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.
cmap2binconverts one or more ASCII configuration map files to a binary format for use by Panther.
cmap2binautomatically appends the binary file name with thebinextension unless you specify a different extension with the-eoption. It places the binary output file in the directory where you run the utility unless you use the-poption.
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]asciiFilebinaryFile...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 (
-aoption only).-f- Overwrite an existing file.
- -i
headerFile- Include specified
headerFileat beginning of ASCII output.-n- Do not sort PI edits in the ASCII file (backwards compatibility option).
asciiFile- With
-aoption, name of the file to receive ASCII version ofbinaryFile. With-boption, name ASCII file to convert back to binary format.binaryFile- Filename of screen, service component or report to convert to ASCII.
f2asclets you create an ASCII listing of the contents of a screen, service component or report (-aoption); and convert it back to binary format using the-boption. 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-boption automatically extracts all files from the specifiedasciiFile.f2ascis 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
f2ascdescribes 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
ACTIONstatement 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=1Two 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,
CIRCULARspecifies 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'sautotabproperty toPV_NO; the second sets itsinput_protectionproperty 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
NUMERICkeyword 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]libraryfilename[filename...]formlib -x [-fluv]library[memberName...]formlib -{d|t} [-luv]library[memberName...]formlib -{e|i|m|o|s|w|z} [-v]libraryformlib -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.
-gcfgStr- Define a configuration management string; begins with the name of your configuration management system—either
sccs,pvcsorscpi(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-moption.-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
-toption, 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.
formliblets 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.
formlibcan 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 .
rptextension into the libraryscreens.lib:formlib -c screens.lib *.rptLibrary member specifications must be explicit; no wildcards can be used.
The
-land-uoptions are useful for operating systems like UNIX that are case-sensitive. For example, the following UNIX command creates the librarynew.liband adds all .scrfiles in the current directory to it; all files receive lowercase names—for example,MAIN.SCRbecomesmain.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
-ooption) 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
-eoption 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.jlkto implement write locking, and keeps a count of the current readers in a shared read lock file calledlibname.rlk. The .jlkand .rlkfiles 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-ioption 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
-ooption makes a library read-only. This is not a reversible operation unless the library has been compacted using the-moption.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
formlibwith the-soption 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 whenformlibwas executed are also copied from the backup library to the new library.All screens that are under source code management and checked-in when
formlibwas 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 binJIFjif2asc -b [-fp]ascJIF binJIF
-a- Create ASCII JIF named
ascJIFfrom specified binarybinJIF.-b- Create binary JIF named
binJIFfrom 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
jif2asccommand-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
-foption 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).-eext- Replace the default bin extension with the specified extension
exton 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.
jpl2binlets you compile JPL modules before storing them in a library or before making them memory-resident. Under UNIX, runjpl2binfrom the command line; under Windows, choose thejpl2binicon 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.
jpl2binsaves the module to a file of the same name with a *.binextension, unless you specify a different extension.
Converts menu files between binary and ASCII formats
m2asc -a [ -fv ] [ -iincludeFile]asciiFilemenuFile[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.
-iincludeFile- Include specified
includeFileat the beginning of ASCII output.-v- Generate a list of files as they are processed.
asciiFile- Name of ASCII file as output with
-aor as input file input with-b.menuFile- Name of binary menu file (as extracted with formlib utility).
The
m2ascutility 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 isOptionswith 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:
FileandHelp.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
binextension on the output file with the given extension (ext). If the-ooption is used,-eis 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.
msg2binconverts ASCII message files to a binary format for use by Panther library functions. The output ofmsg2binis a binary file; the utility uses theTAGsto 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 (
horjpl) 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.-nnum- Start numbering messages with the specified num for the first #define or global. If no number is entered,
0(zero) is used.-ofile- Direct output to the named file.
-p- Place output file in the same directory as the corresponding input file.
-spfix- Select only message names beginning with the specified prefix
pfix.-v- Generate list of the files processed.
-xpfix- Prepend the specified prefix
pfixto the tag portion of the message.msgFile- Name of ASCII file containing your application's messages.
msg2hdrconverts an ASCII message file that contains your application's messages to a C header file. The output ofmsg2hdris a.hfile with#definestatements for each user message tag. The messages are numbered sequentially starting with0x0to0xF. 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 -joption,msg2hdryields 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]asciiFilestyles.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:nameoption 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.styfile.asciiFile- With the
-aoption, name of the file in which to place the ASCII styles settings. With the-boption, name of the file containing ASCII text for conversion to binary format.
The
s2ascutility must be executed from the command line. With the utility, you can convert yourstyles.styfile 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
s2asccontain a list of the property settings for each style, followed by a list of the styles assigned to each class.
![]()
![]()
![]()
![]()