Tools

This section lists and explains all the tools and provide guidance or instructions on various languages, applications and front end systems which jBASE provides.

jBASE Editor (jed)

The jED editor is a full screen, context sensitive, screen editor designed specifically for ease of use and learning and is the pre- ferred editing tool for the jBASE-operating environment and suited to the editing of jBASE BASIC programs. The features provided in jED will be familiar to users of many other editors. It incorporates many powerful facilities for manipulating text and data, and contains all the features that programmers have come to expect of a good editor.

jED has full screen access to jBASE file records and UNIX files - a feature not provided by other editors. The Command key- strokes are fully configurable by each user, as is the keyboard. Therefore, jED is customizable to mimic many of the operations of other editors and provide a familiar environment for new users. Keyboard and Command  independence make jED  the most versatile and powerful editing tool available for all jBASE-editing requirements

jED

jED is a robust, terminal independent screen-editing tool.

JED Command Syntax

JED Filename Item (Options JED Item )

Editor Screen

Sample jED editor is given below.

*File PROGS, Record cust_rep.b Insert 10:45:17 Command->
001
002
003
-------------------------------- End Of Record --------------------------------

The screen is divided into three sections:

  • Editor status line at the top
  • Command line
  • Data editing area, which fills the rest of the screen.

Execution Commands

Command

Description

HOME/Ctrl A

Move to start of current line

END/Ctrl E

Move to end of current line

Ctrl W

Delete word

Ctrl K

Clear to end of line or join.

Ctrl D

Delete current line

Ctrl G

Mark block. 1st Start Blk, 2nd End Blk, 3rd Remove Mark

Ctrl L

Insert line below current line

Ctrl N

Locate next occurrence

Ctrl O

Toggle overwrites and insert. default insert

Ctrl R

Redisplay screen

Ctrl T

Copy the character from the corresponding cursor position on the line above

Ctrl V

Indent for BASIC

Ctrl ]

Insert ]

Ctrl \

Insert \

Command Line

From Edit mode, press the <Esc> key from keyboard to invoke the command line.

Command

Description

CBn

Copy Marked block before current line, n times

Can

Copy Marked block after current line. n times

/string

Locate the next occurrence of string

MB

Move Marked block before current line

MA

Move Marked block after current line

BI

Format BASIC code

BION

Turn on Format indentation

! Cmd

Execute Command

!!

Re-execute last ! Cmd

HX or HEX

Toggle the display of the record in Hexadecimal

Invoking jED

Call the jED editor from the UNIX or Windows Command line.

Command Syntax

jed pathname {pathname..}
jed {DICT} filename{,filesection} {record-list} {(options)}}

If you simply issue the Command jED, the editor will open at the last file in use with the cursor positioned wherever it was when the last edit session was closed. In other words, you can continue from where you last left off. If the file referenced by pathname does not exist the Command, jed pathname, will either open an existing file or create a new one. The edit window displays the contents of the file. If you specify a list file, the editor will present the next file as you finish with each one.

When the editor is supplied with the name of a file resident in a database (such as a j-file), it scans the rest of the Command line looking for a list of record keys. If no record keys were specified, the jED editor will prompt for a list, else it will edit the list of record keys one after the other.

Note : that because the editor uses the jEDI interface to access the records, use it to edit records in any file system that jEDI recognizes Command Elements FOR DATABASE RESIDENT FILES

DICT

This modifier is only required if you wish to edit records in the DICTionary of a j-file.

filename

This is the name of the "file" containing the records.

Filesection

This is the file section name, as used in a j-file.

record-list

It is possible to furnish a list of records to be successively edited. This can be a list of records separated by a space, or "\*" to indicate all records in the file. NOTE: that the \ is the shell escape character to stop the * being treated as a wild card that would otherwise be expanded. Additionally, the record-list can be fed to this Command by preceding the jed Command with a jBASE list generating Command such as SELECT or SSELECT. In this case, the record-list is ignored.

Command Line Options

Options available when executing the jed Command are as follows:

Option

Explanation

Bnn

{,mm}

Performs automatic indentation on the record to be edited. This will be of use when creating jBASE BASIC pro- grams.

nn

Parameter specifies the number of spaces to indent by for each indentation level (default is 4 spaces).

mm

This optional parameter is the number of times the nn indent value should be applied at the start of each line. If mm is 2 and nn is 3, each line will be indented initially by 6 spaces and each subsequent indent level will be 3 further spaces.

E

Uses the default keyboard Command set-up at installation, rather than that which may have been set up exclusively for the port.

L

Does not lock the file or record being edited. This allows simultaneous edit access from elsewhere.

R

Allows READ ONLY access to the record or file.

S

Space characters not trimmed from end of line

Tnn

Sets tab stops every nn spaces for use within the editor.

EXAMPLE

Command

Description

jed test.b

Opens the test.b file for editing initially in insert mode with automatic indentation turned on. If the file does not exist, it is cre- ated and the text New Record is shown at the top of the screen.

jed test.b (B5,2)

The jBASE BASIC program test.b is edited with automatic indentation set. The initial indent is set at 10 spaces for all lines, and each additional indentation level is set at five spaces.

jed invoices.b subs.c

The jBASE BASIC program invoices.b will be edited, followed by the "C" program subs.c.

jed BP menu1.b menu1.1.b

The jBASE file records menu1.b and menu1.1.b are successively edited. Record locks are taken on the records as they are edited to prevent multiple edits on the same record.

jed ORDERS 0012753 0032779 (R

The records 0012753 and 0032779 from the file ORDERS will be successively edited in read-only mode.

SSELECT ORDERS WITH CUST.NAME = "UPA"
>JED ORDERS

The orders of the customer UPA will be edited in sorted order. Record locks will be automatically set during the editing period to prevent simultaneous updates by other users.

jed -F BP \*

All the records in the jBASE file BP are set up to be edited one after the other.

NOTE: The use of the shell escape character (\) before the *

The record STXFER.b in file BP is opened for editing. A tab stop is set at column 10 for use in this session.

jed -F BP STXFER.b \(T10
Using the jED Editor

The jED editor has two different modes:

  • Command mode for entering editor Commands, and
  • Edit mode for entering or modifying data. The current mode is displayed at the top of the screen.

Command Mode

When the editor is invoked, the record or text file is displayed, and the user is placed in input mode with the cursor at the input position.

To change to Command mode simply press the <Esc> key on the keyboard. The cursor now moves to the top portion of the screen and the editor awaits input of a Command. Once a valid Command has been executed, control passes back to the Edit mode if appropriate.

Edit Mode

Use edit mode when entering or modifying data. This is the default mode for an editor session.

Keyboard control sequences are available to perform a variety of functions such as cursor positioning, scrolling and marking text for a subsequent action.

Some Command line operations are also available from keyboard control sequences.

ED

The ED editor provided with jBASE is a limited version of the familiar (but now superseded) ED editors.

You are strongly advised to use the jED editor in preference to ED - we have not included any operating instructions for the ED editor.

If you are only familiar with the old style ED editor, continue to use it in your accustomed fashion - but please find a few minutes to review the operation of jED. You will find that the transition from ED to jED is very simple and you will be amply rewarded by adopting the much more efficient and friendly environment provided by jED.

jSHELL

The jsh command invokes jSHELL - the jBASE shell. It can be invoked as your login shell by using the normal system

administration software supplied with the platform, either via *.bat files (Windows) or *.profiles (UNIX).

jSHELL has been designed to ease migration from older systems, and to overcome some of the differences between various platform command line environments. The more primitive features seen on some older platforms (such as the “dot” com- mand stacker) have been replaced with easier to use and equivalents that are more functional.

The most noticeable difference between jSHELL and other command line shells, such as the UNIX Korn shell (ksh), is that com- mand line arguments such as “*” and “?” are not expanded by the shell but passed directly to the command that has been invoked. In same manner, quoted strings (such as “quoted string”) are passed directly to the command with quotes intact. This enables query language statements such as:

SSELECT file = “[SPROUT]” BY *A1 –

The above command helps you to be issued directly from jSHELL. If the same command were issued from the ksh Prompt, it would have to be issued as:

SSELECT file = \”[SPROUT]\” BY \*A1 –

The above command helps you to avoid the quotes being removed and the “*” being expanded by the Korn shell.

Beyond this convenient feature, jSHELL also offers many significant advantages over traditional shells and is easier to use. Some of the main features of the jsh are:

  • Easily customised command line prompt
  • If required commands can be passed to other shells Easy command recall.
  • Easily identified special prompt when a select list is active
  • Long program names are automatically translated to their new names on SVR3.2 systems. Run jCL programs directly from jBASE hashed files.
  • Command type-ahead is supported.

Command Syntax

jsh - -c command -s shell -p Prompt

Option

Description

-

Execute proc from MD/VOC file with same name as user login. (on UNIX the .profile and .jshrc files are pro- cessed)

- c com- mand

Specifies that a jsh process should be spawned to execute command. When the command terminates, the jsh process will also terminate.

-s shell

Specifies which shell emulation to use when executing jsh. The jsh will default to the previous emulation used by the current port.

-p Prompt

Specifies the Prompt to be used while executing jsh.

-t

Opens the tty device and accepts commands from the keyboard when the jSHELL has been invoked to process a command input file. The default action is to exit the shell once the processing of the input file has been completed.

-  z fore- ground, background

Select foreground and background screen colors (e.g. jsh -z foreground,background). Colors can be WHITE, YELLOW, MAGENTA, RED, CYAN, GREEN, BLUE or BLACK. On Windows 95/98, the defaults are BLUE

foreground and WHITE background (i.e. jsh -z will be blue on white). On Windows NT/2000, colors can be globally set using the Console setup from the Control Panel or by selecting the Properties of a jShell short- cut.

NOTE: If the jsh command is issued without arguments, a jsh process is spawned and this process becomes your command shell. The jsh process will replace the current shell if it is invoked through the UNIX exec command.

Using JSH

To use this tutorial you will need to be logged in to your UNIX system and positioned at the shell prompt. If your user account has not been configured to run jSHELL by default, execute it and complete the following:

exec jsh –
NOTE: Some UNIX SVR4.x systems have there own shell called jsh. If the PATH environment variable includes the directory containing the SVR4x native jsh before the jBASE release directory path, you may execute the native ver- sion rather than the jBASE version. You can either change the PATH list or use the absolute path name to the jsh executable.

The default jSHELL Prompt should now appear:

jsh user cwd -->

User is your login name and cwd is your current working directory. For this exercise, we will assume that your login name was jBASE and that your current working directory is the home directory for jBASE. In this case, your Prompt will look like this:

jsh jBASE ~ -->

The tilde character (~) is a shorthand method of referring to your home directory. The shell expands this character to the full path name of your login home directory before executing commands. If you had changed to a sub-directory called “source” your Prompt would now look like this:

jsh jBASE ~ --> cd source 
jsh jBASE ~/source -->

You can change the primary and/or secondary default Prompts by using the following commands:

jsh jBASE ~ -->set jps1 newPrompt 
jsh jBASE ~ -->set jps2 newPrompt
NOTE: The secondary prompt is only displayed for an active select-list, i.e., after a SELECT, GET-LIST, QSELECT, BSELECT, etc

newPrompt is a string defining the new Prompts. The string can contain terminal control characters such as a bell character by specifying special character sequences in the newPrompt string. The character sequences allowed are:

Sequence Replaced With

$EnvVar

The value of the specified environment variable

$%a

The user account name

$%m

The phrase “(Cmd)” if the shell is in command mode

$%n

The new line sequence

$%C

The current working directory

$%c

The current working directory with any portion matching the home directory replaced with ~

$%p

The port number

$%e

The entry number in the stack currently being edited

$%d

The current date in dd mmm yyyy format

$%t

The time of day in hh:mm:ss format

$%u

The host name as defined by the UNIX command uname (UNIX only)

$%y

The tty name (UNIX only)

$%s

The name of the jshelltype that will execute the commands at the Prompt

Chars

All other characters are taken as literals and included in the Prompt

The shell operates in two distinct modes each having a separate function:

  • Command mode is used to issue all commands to jsh itself
  • Operating mode is used to issue all commands to the system.

There is only one command available in the current implementation of jsh - the / command. This character introduces a search string to jsh. The search string is compared against every command in your command history and if a match is found, the command is recalled as the current command, just as if you had typed it in again. Pressing the escape key on your key- board normally enters command mode.

If you include the $%m sequence when you configure the Prompt, the Prompt will change to indicate whether you are in the shell command mode. For example, if the Prompt has otherwise been left in its default state, the following sequence will locate the last cd command in your command history.

NOTE: The appearance of the “(Cmd)” string as part of the Prompt on the middle line.
jsh ~ --><Esc>
jsh ~ (Cmnd) -->/cd
jsh ~ -->cd source

Two other keystrokes within jsh allow you to recall up to 50 previous commands. They are:

  • <Ctrl P> - Go to previous command
  • <Ctrl N> - Go to next command

Using these two keystrokes, you can retrace your commands by stepping backwards or forwards one command at a time. If you need to change any part of a command line, it is very easy as the jsh supports command line editing by using a subset of the jED editor keys.

In particular, you can use the right and left arrow keys to move the cursor to any position in the current command string. The jsh is configured for editing in insert mode by default. This means that any characters you type will be inserted just before the current cursor position. Use the backspace key to delete the previous character and the <Delete> key to delete the character directly under the cursor. Try recalling a previous command and experiment with the editing keys.

The jsh can be placed into overwrite editing mode by pressing <Ctrl O>. In this mode, all typed characters will replace the char- acter under the cursor.

The following table lists all the editing commands:

Keystroke Command

<Right>

Move the cursor right by one character

<Left>

Move the cursor left by one character

<Home> or <Ctrl A>

Move the cursor to the start of the command line

<End> or <Ctrl E>

Move the cursor to the end of the command line

<Down> or <Ctrl N>

Recall the next command in your history

<Insert> or <Ctrl O>

Toggle Overwrite/Insert mode, default is Insert

<Up> or <Ctrl P>

Recall the previous command in your command history

<Ctrl L>

List the command history maintained by the shell

<Ctrl K>

Delete from the cursor to the end of the command line

<Ctrl W>

Delete from the cursor to the end of the current word

<Tab>

Move to the start of the next word

<Backtab>

Move to the start of the previous word

jSH Emulation Modes

If you are already familiar with operating UNIX under other shells, jsh will allow you to work in the environment with which  you are most comfortable. You can switch between the various emulation modes in jsh by using the function keys:

F1

jSHELL (jsh)

F2

Native Platform Shell. (CMD.exe, ksh, csh, etc)

F3

Mixed shell (msh)

Some terminals may not support these function keys. If your terminal does not support the F1, F2 and F3 function keys, the emulation mode can be modified by the jsh internal command, jshelltype. The command syn- tax is as follows.

jshelltype shell

jshell can be one of the following:

  • jsh pre-processes Meta characters like the asterisk (*), as expected by legacy systems.
  • sh native system shell On UNIX depends of SHELL on NT/Win95 CMD.exe.
  • msh mixed shell. pre-processes Meta characters as a combination of jsh and sh.
  • msh Mapped Sequences

Options specified on the command line will have the leading bracket escaped. For example:

CT File1 Record1 (X becomes CT File1 Record1 \(X

Any asterisk used as part of a record specification is escaped. For example:

CT File1 * becomes CT File1 \*

Quotes used in a selection criteria specification are escaped

LIST File1 WITH A1 = “XYZ]” becomes LIST File1 WITH \*A1 = \”XYZ]\”

Other Meta characters are untouched so that pipes, etc. can be invoked:

jBASE Profiling

The following describes the new jBASE 4.1 mechanisms for controlling certain profiling tools:

This profiling mechanism allows versatility in where the output logs are stored and hot spot profiling in C and jBASE BASIC code. The functionality can be applied dynamically to currently executing applications. It may be used to trace branch func- tions (INPUT, EXECUTE, CALL and RETURN instruction), to trace memory allocations (subsequently using jfatty to look for memory leaks), and general profiling activity.

Invoking Profiling

The basic way to invoke the functionality is through the JDIAG environment variable. Here follows a quick example as run from the Unix shell.

% export JDIAG=branch=on:output=filename.out
% MYPROGRAM

In this example, two commands are specified delimited by a colon (There can be any number of commands delimited). In this example, 'branch=on' means to turn on the tracing of branch instructions and write the trace output to the file 'file- name.out'.

It is also possible to run these commands against running programs. The same example as above but applied dynamically to port 23 would be:

% jprof 23 branch=on:output=filename.out

On most platforms the effect should be immediate but due to a bug in RedHat Linux and the limitation of Windows, the effect might take up to 60 seconds before it starts working.

You can obtain a short help screen as a quick reference reminder by the following:

% JDIAG=help WHO
JDIAG=option{:option{:option ...}}
option can be one of ...
profile={off|short|long|user|jcover}
output={stdout|stderr|tmp|filename{,refresh_mins}
memory={off|on|verify}
branch={off|on}
help
1 greg

Although the JDIAG environment variable name is case sensitive, the commands contained in its value are not e.g. profile=ON is the same as ProFILE=On

A list of all the available commands follow, below which is listed an example of dynamic usage to test for memory leaks in jBASE.

profile=off

Turns off the general profiling tools.

profile=short

Turns ON the short form of profiling.

profile=long

Turns ON the long form of profiling.

jprofile=user

Turns ON the user-profiling output

profile=jcover

Turns ON the form of profiling required for jcover

output=stdout

All the trace logs will be displayed to stdout

output=stderr

All the trace logs will be displayed to stderr

output=tmp

{,nn}

The trace logs will be written to $JBASICRELEASEDIR/tmp/jprof_nn where nn is the process ID. You can optionally specify a cycle time in minutes. If the cycle time is specified, then 5 files are created with the suffixes _0 through _4 and the output logs will cycle through all 5 files in intervals of nn minutes. (At the time of writing this manual this feature is under development, future utilities will use this feature to display snapshots of the running system).

output=filename

{,nn}

The trace logs will be written to the file 'filename' which can be any valid operating system file name, or even device name. Again, the optional cycle time can be used to create 5 files.

memory=off

Turns OFF all the traces of memory allocations

memory=on

Turns ON the trace of memory allocations.

memory=verify

Turns on the verification of memory allocations, looks for over-runs and under-run memory alloc- ations, duplicate released spaces etc. This can only be executed by using the JDIAG environment vari- able and cannot be set dynamically.

branch=off

Turns OFF all the branch traces.

branch=on

Turns ON the trace of branch instructions such as INPUT , CALL, RETURN and EXECUTE/PERFORM

help

Displays the short help messages.

As an example, let us assume that a program is running and gradually consuming more and more memory. You want to invest- igate where the memory is being leaked.

Procedure:

  1. Find the port number from where it is running.
    jsh --> WHERE
    Port Device Account PID Command
    0 6 greg 10941 MYPROG
    *1 8 greg 10949 WHERE
  2. Start dynamically tracing the memory allocations.
    jsh->jprof 0 
    memory=on:output=MYPROG.output
    Message sent successfully to port 0

    The above command could take up to 60 seconds to invoke. Run MYPROG for 3-4 minutes to accumulate some statistics. The MYPROG.file output will increase in size as the trace begins.

  3. Stop the trace.
    jsh->jprof 0 memory=off

    Message sent successfully to port 0.

    Wait 60 seconds to take effect

  4. Run the jfatty command against file created file jsh->jfatty MYPROG.output
    Remaining: 00005785: 100 bytes at 0x08115108 at test9C.c,6(test9.b,6)
    Remaining: 00005795: 100 bytes at 0x08115148 at test9C.c,6(test9.b,6)
    Remaining: 00005805: 100 bytes at 0x08115188 at test9C.c,6(test9.b,6)

    You can see where the memory is leaking.

This is an example of hot-spot user profiling, the idea of which is that you place some function calls in either your jBASE BASIC code or your C code and let the profiling tools measure the CPU used between these calls.

You can call function JBASEUserProfile, where n is an integer between 0 and 10. A value of 0 means profiling ticks are discarded. A value of 1 through 10 means each CPU clock tick is stored in a 10 element array so we can ascertain how many CPU ticks arrived for that period. Consider the following example jBASE BASIC code ...

INCLUDE JBASIC.h
OPEN "FB1" TO DSCB ELSE DEBUG
S1 = SYSTEM(12)
FOR I = 1 TO 100000
JBASEUserProfile(1)
READU rec FROM DSCB,"x" ELSE NULL
JBASEUserProfile(2)
RELEASE
JBASEUserProfile(0)
NEXT I
S2 = SYSTEM(12)
PRINT "ELAPSED = ":(S2-S1)/1000

Compile normally with BASIC and CATALOG, or use the jcompile command. When it is run set the JDIAG variable as follows (assuming Unix):

JDIAG=profile=user PROGRAMNAME 
ELAPSED = 3.66
PROFILE:User Profile 1 , 30 ticks 83.33 %
PROFILE:User Profile 2 , 5 ticks 13.89 %

The output shows you that 83.33% of the CPU time is spent between the JBASEUserProfile(1) and JBASEUserProfile(2) function calls, and that 18.39% of the CPU time is spent between the JBASEUserProfile(2) and the JBASEUserProfile(0) function calls, thus proving that the RELEASE statement is consuming large amounts of CPU.

The function calls can equally be used in C code.

To ensure more accuracy, the program should be run for at least a few seconds in order to accumulate as many CPU ticks as possible. Anything less than a second will increase the margin of error

In particular, developers might like to notice the hot-spot user defined profiling which allows C code to be modified and easy verification of where CPU time is being spent within a function.

You can add checkpoints into your jBASE BASIC or C code. At the end of the test program, it tells you how many ticks and what percentage of CPU was spent between these checkpoints something very valuable when trying to determine, for example, " There is a big JediOpen function that takes a huge amount of CPU, but where inside the JediOpen() does it take the most?" Using the profiler, in this example, you can tell it is not JediOpen, but rather JediClose.

CHAR

The char utility displays a character conversion table, providing decimal, hexadecimal and octal representations of the ANSI character

Encrypt

The Encrypt utility provides simple encryption/decryption of files using a user specified key.

Encrypt –k key File > EncryptedFile Encrypt –d –k key EncryptedFile > File

ERRMSG

The errmsg tool displays the platform related error message text when used with an error message number.

errmsg 13

HAD

The had utility displays any file in a hexadecimal format. A hexadecimal offset can be specified from which to start the display.

had –offset
 
JCOMP

The jcomp utility provides a mechanism to compare two Hash files or directories.

jcomp -Options FileName (Options

Option

Description

-L or (L

Restrict error display to single line.

-N or (N

No paging.

-P or (P

Output to printer.

-S or (S

Suppress matching records.

-T or (T

Trim source before compare.

-V or (V

Verbose display of non-matching records.

jCOVER

The jcover programs provide a mechanism to generate statistical information on the coverage of an application during a test run. It can be used to calculate the percentage of code that was executed, percentage not executed, what sources were not used in files and so on.

The usage of jcover depends upon much of the existing profiling tools. Therefore this document should be in conjunction with existing documentation available for profiling tools. The jcover utility can be used to great advantage with the jkeyauto utility. Using both of them together it is possible to build up highly automated scripts that will automatically test new releases of software and ensure that a known percentage of your entire application gets executed as well as ensuring that all paths through your application are executed and tested.

Using jcover involves the three key steps:

  1. Run the application and record the information.
  2. Collate the recorded information.
  3. Report the jcover information.
JFB

The jfb command is used to produce source code listings in a standard format for listing to the terminal or printer. The format of the command is as follows:

jfb -Options FileName Itemlist (Options

Option

Explanation

-A or (A

Alternate indenting of CASE statements.

-C or (C

Indent comments with the source code not column 1

-Ln,m or (Ln,m

Set indentation to n spaces, with initial set at n*m

-Mnn or(Mnn

Set maximum number of indentations to nn, default 10

-N or (N

Do wait for keyboard input between pages

-P or (P

Send output to the current printer queue

-Snn or (Snn

Set the percentage split of code to comments to nn%

-V or (V

Display indentation with + character

For example, to list the file batch.b in sub-directory source to the printer, indenting by four spaces per level and starting non- labeled code at 8 spaces from the left margin:

jfb -L4,2 -V source/batch.b
JFIND

The Windows platform does not provide a command line search program like the Unix find command. This is a limited form of the Unix find command for the Windows platform.

jfind C:\MYDIR -name ".*FRED.*" -print
JGREP

You can use the jgrep command to search for strings in jBASE files or directories.

jgrep -Options SearchString FileName (Options

Option

Description

-c or (C)

make search case in-sensitive

-i or (I)

interactively ask for one or more SearchString"s

-k or (K)

search in record KEY only for string

-l or (L)

simply list the record keys they were found in

-n or (N)

do not wait for keyboard input between pages

-p or (P)

send output to printer

-s or (S)

sub-directory searches

-t or (T)

trims redundant spaces from search patterns

-r or (R)

raw display exclusive of dollar items

JRM JMV JDIR

Many commands are built-in to the cmd.exe shell and so cannot be executed like a like other executables. The following com mands have been provided to use in either jsh or cmd shell.

Command

Description

jrm {-r}

remove file or directory, recursively

jmv oldfile newfile

move oldfile to newfile

jdir

list directory

JMSGBOX

Use the jmsgbox utility to display a message box on Windows platforms. Use it with a console process and the buttons are not configurable.

Command Syntax

jmsgbox text

Example

PERFORM "jmsgbox    Test     Box"                  SETTING Result
IF       Result<1,1>=0        THEN    CRT      "Ok       was clicked"
IF Result<1,1>=1 THEN
JSHOW

The jshow command can be used to find jBASE files or programs.

Command Syntax

jshow -Options Name {Name ...}

Where Options can be one of the following:

Option

Explanation

-a

display subroutine names in dll/shared object

-c

display compile time and source file

-f

file name only search

-h

display this help screen

-p

program name only search

-s

subroutine name only search

-v

verbose mode

Syntax Elements

Name - Name of file, subroutine, program or dll/shared object

jprof

The jBASE profiling tools jprof enables developers to analyze applications to determine potential bottlenecks or trouble spots within the application code.

By default, no profiling is done in the program. Programs do not have to be compiled in any special manner to enable profiling for that program. All that is required is that the programs were not compiled with optimization, as this discards the debug information which is required for profiling.

The mechanism works by receiving a signal at every clock tick and keeping note of where the program was when the signal arrived. Thus, for the profiling to be accurate, the application must be run for a relatively long time. It will not show par- ticularly good results if, for example, a program executes in less than a second. Several minutes or longer is preferred.

Currently profiling is available only with jBASE on Unix (including Linux) platforms.

Enabling profiling

Profiling can either be enabled using the -JP option, which only profiles the root process, or via the JBCPROFILE environment variable, which profiles the root process as well as all EXECUTEd processes.

MAINPROG –JP

This command generates a profiling file called jprof_n in the current directory where n is the port number. Only MAINPROG and any CALLed subroutines are profiled, any EXECUTEd programs will not be profiled. However, if the CPU time spent execut- ing the actual EXECUTE statement is significant, that line will be included in the profiling statistics. Profiling terminates when the application stops or chains to another program.

JBCPROFILE=1 
MAINPROG

This command generates a different profiling file for each process executed in the form jprof_pid_n, where pid is the process id and n is an incrementing number starting at 0.

The profiling file generated will only contain information about user CPU time. The time spent in system calls, file I/O, and lines which do not accumulate more than a clock tick are not included in the profiling statistics.

Profile Reporting

You should use the jprof command to provide profile analysis of the jprof files generated by a program executed with the JP option.

jprof    - kfilename        {jprof    {_    nnn}}
jprof    - a        {jprof    {_    nnn}}
jprof    - o {-    v}    {jprof    {_    nnn}}
jprof    - s        {jprof    {_    nnn}}
jprof {-n{-u}} {-i} {-fFilename}} {jprof{_nnn}}

Where,

  • -a - Display all ancillary information.
  • -fName - Name of file to extract source from.
  • -I - Sort by increasing ticks, rather than decreasing tick.
  • -kKeyFile - Name of file to store keyboard INPUT, used by jkeyauto.
  • -n - Subtotaled and sorted by source name
  • -o - Display shared object usage
  • -s - Display list of subroutines called
  • -u - Sorted by CPU utilization
  • -v - Verbose mode
jprof{_nnn} Profile name (default "jprof")

Example of Profiling

Imagine the source "test1.b" below has been edited into file BP, where BP is a directory. Notice the INCLUDE of another source file "test2.b".

OPEN "fb1" TO DSCB ELSE STOP 201,"fb1"
PRINT  "Phase  1 -  - start" S1  =   SYSTEM  (9)
FOR Id = 1 TO 100
Rec   =    " FOR I =  1 TO 100
Line   =    " FOR J =  1 TO 20
Line  := CHAR (SEQ ("A")+RND (26)) NEXT     J
Rec  = Line NEXT   I
WRITE  Rec ON DSCB,Id NEXT    Id
PRINT "Phase 1 - - end, CPU = ":SYSTEM (9)- S1
INCLUDE test2.b
PRINT C1:" records in file fb1" PRINT "End"

The program can be created normally with the following command:

BASIC BP test1.b CATALOG BP test1.b

By default, when the program is run, no profiling will take place. Run the program with the -JP switch to create a file "jprof":

test1 -JP

You can now examine the profile file with the "jprof" command, using the -f option to generate optional source code listings from the file BP.

jprof -f BP jprof

PROFILE REPORT

Profile of program test1 from profile jprof Page 1

Source        Line        Ticks    % Source
test2.b    8    166        32.93 READ Rec    FROM DSCB,Key EL
test1.b    9    160        31.74 Line :=    CHAR (SEQ ("A")+RND (
test1.b        11    128    25.39    Rec = Line
test2.b    7    28        5.55 WHILE    READNEXT Key DO
test1.b        10        9 1.78    NEXT J
test2.b        9        5    0.99 C1++
test1.b    13    3        0.59 WRITE    Rec ON DSCB,Id
test2.b        5    2    0.39    SELECT DSCB
test1.b        7    2    0.39    Line = "
test2.b 10    1    0.19    REPEAT       

The -i option sorts the output with incrementing Ticks counts. The -n option would additionally sort it by file name, so the "test1.b" entries will be displayed separately to the "test2.b" entries.

You can use the jfb command to produce source code listings in a standard format for listing to the terminal or printer. The format of the command is as follows:

jfb -Options FileName Itemlist (Options

Option

Explanation

-A or (A

alternate indenting of CASE statements.

-C or (C

indent comments with the source code not column 1

-Ln,m or (Ln,m

set indentation to n spaces, with initial set at n*m

-Mnn or(Mnn

set maximum number of indentations to nn, default 10

-N or (N

do wait for keyboard input between pages

-P or (P

send output to the current printer queue

-Snn or (Snn

set the percentage split of code to comments to nn%

-V or (V

display indentation with + character

For example, to list the file batch.b in sub-directory source to the printer, indenting by four spaces per level and starting non- labeled code at 8 spaces from the left margin:

jfb -L4,2 -V source/batch.b

The Windows platform does not provide a command line search program like the UNIX find command. This is a limited form of the UNIX find command for the Windows platform.

jfind C:\MYDIR -name ".*FRED.*" -print
JSHOW

You can use the jshow command to find jBASE files or programs.

Command Syntax

jshow -Options Name {Name ...} Where Options can be:
  • -a - Display subroutine names in dll/shared object
  • -c - Display compile time and source file
  • -f - File name only search
  • -h - Display this help screen
  • -p - Program name only search
  • -s - Subroutine name only search
  • -v - Verbose mode

Syntax Elements

Name - Name of file, subroutine, program or dll/shared object

JSTART

The jstart utility was originally provided to circumvent a problem with the Win95 CreateProcess API. The API fails to set the standard input handle to the new console if the standard input handle of the parent process is not a console device, i.e. a DATA statement has been used. However, jstart can be used to start up a process in the same window, in a new window or in the background. Not available on UNIX platforms.

jstart -Options Command

-v

verbose

-w

wait for process

-m

run with window minimized

-b

run as a background job, i.e. no console

-i

inherit current window

-t'Title'

specify the title

-p<class>

priority class; 0 - Normal; 1 - Idle; 2 - High

EXAMPLE

EXECUTE "jstart jsh -s jsh -"

This will start up the jSHELL in a new window, with a different port number. This works for both Win9x as well as NT.

JTIC
jtic -Options DescriptionFile

Where Options can be one of the following:

Options

Description

-x

Description File contains extended capabilities

-v

Verbose mode

By default, the program jtic will take a source description file called terminfo.src and assume it contains standard terminfo names. The output will be to a file called /usr/lib/terminfo/x/xyz, where x/xyz depends upon the terminal name as contained in the description file.

You can use any alternative description file to terminfo.src by specifying the description file name on the command line. You can specify an alternative output directory to /usr/lib/terminfo by amending the TERMINFO environment variable. However, when you run a BASIC program that accesses these definitions in an alternative directory, the TERMINFO variable needs to match that when the definition was compiled; by default the jtic program assumes the description file contains standard ter- minfo definitions: e.g.

cuu1=\E[1A, cols#80,

If you want to create a binary with the extended capabilities, use the -x option. Remember when running jtic you will prob- ably require root privileges to write to the /usr/lib/terminfo directory.

KEYS

The keys utility displays the keyboard input. This program does not exist on the NT/Win95 platform but could be coded as fol- lows:

NOEXIT
LOOP                =            1
ECHO                            OFF
CRT        "Hit        a    key        :":
IN    ch    FOR    100    ELSE    NOEXIT    =    0
ECHO                            ON
WHILE                NOEXIT            DO
IF ch <> 127            THEN
CRT "." : CHAR (9): "0x0" :    ch        "MCDX"
END            ELSE
CRT CHAR (ch) : CHAR (9): "0x0"    :ch        "MCDX"
END
REPEAT
LIBUTILS

The libutils shared library is provided to enable users to code terminal independent code to handle keyboard input.

EXAMPLE
Include key definitions INCLUDE jCmdKeys.h
Initialize command key  strings CALL   JBASECommandInit
TimeOut = 150 ;* Set timeout value deciseconds ECHO      OFF
LOOP
Get Next Command Value CALL JBASECommandNext(RetNo, RetString, TimeOut)
RetNo should match numbers in include/header file
BEGIN CASE
CASE  RetNo =  cmd_ cursor_  up CRT   "CURSOR   UP"
CASE  RetNo =  cmd_ cursor_  down CRT   "CURSOR   DOWN"
CASE  RetNo =  cmd_ cursor_  left CRT   "CURSOR   LEFT"
CASE  RetNo =  cmd_ cursor_  right CRT   "CURSOR   RIGHT"
CASE RetNo = cmd_ alpha_ numeric CRT    "ALPHANUMERIC"
CASE RetNo = cmd_ timeout
END CASE
CRT "TIMEOUT"
BREAK
*   Output   the   actual   string   returned
   CRT   "RetString      :":OCONV   (RetString,"MCP.")
REPEAT              
MW42

The MW42 tool is designed to assist with diagnosing issues which relate to a gradual build up of resource usage over a period of time. It records information from a series of both jBASE and operating system tools, collecting data on such things as system configuration, process status, memory usage, disk space, state of jBASE daemons etc.

Command Syntax
Mw42 {-a –f –n –pPot –pp1-p2 –t -uUser –nn1 –nn2 > output.file}
Syntax Elements

Option

Description

-a

Display application account instead of currently logged on user name

-f

Display full listing. Normally display is truncated to screen size

-n

Disable check for input (Some platforms block when input is requested)

-pPort

Restrict display to port number specified

-pp1-pp2

Restrict display to ports in the range p1-p2

-s

Display IO stats instead of iSeries JobID (default on other platforms)

-t

Prefix each line with time stamp

-uUser

Restrict display to specified user

-nn1

Interval in seconds between samples

-nn2

Number of samples to take

> out- put.file

To facilitate further investigation – it is often useful to redirect the mw42 output to a file. Mw42.out is the usual convention.

Example

mw42 -f -a -t -n 30 1440 > mw42.out

This command produces a full listing for the application account with timestamps on every line without asking for input. Sample every 30 seconds for 1440 samples and pipe the output to mw42.out.

NOTE: When setting the interval parameter – care should be taken to not set such a short interval so that monitoring impacts system performance. In addition an mw42.out file can grow to a large size so the location of the file being produced should be con- sidered.
@USERSTATS

The @USERSTATS allows a program to retrieve miscellaneous information about itself. For example if a program wants to find out how many database I/O's it performed, the following command can be executed.

info1 = @USERSTATS
read1 = info1<19>
EXECUTE 'COUNT fb1 WITH *A1 EQ "x"'
info2 = @USERSTATS
read2 = info2<19>
PRINT "The COUNT command took ":(read2-read1):" READ's from the database"
PRINT "The COUNT command took ":(read2-read1):" READ's from the database"

The following definitions have been added to JBC.h file which defines the layout of data returned either through the @USERSTATS variable or by opening file SYSTEM(1027) and reading the items in like that.

EQUATE USER_PROC_PORT_NUMBER TO 1;* The port number
EQUATE USER_PROC_NUM_PROGRAMS TO 2;* Number of programs running in this port
EQUATE USER_PROC_START_TIME TO 3;* Time user started in UTC format
EQUATE  USER_PROC_PID TO 4  ;* Process ID
EQUATE USER_PROC_ACCOUNT TO 5;* Name of the account
EQUATE  USER_PROC_USER TO 6 ;* Name of the user
EQUATE USER_PROC_TERMINAL_JBASE TO 7;* Name of terminal according to jBASE
EQUATE USER_PROC_TERMINAL_OS TO 8;* Name of terminal as seen by OS
EQUATE USER_PROC_DATABASE TO 9;* Name of database connected to
EQUATE USER_PROC_TTY TO 10;* Name of TTY device
EQUATE USER_PROC_LANGUAGE TO 11;* Language
EQUATE USER_PROC_LISTENING_TIME TO 12;* Time in UTC the listening thread last worked
EQUATE USER_PROC_MEM_FREE TO 13;* Amount of memory in heap space free chain
EQUATE USER_PROC_MEM_USED TO 14;* Amount of heap space memory in use
EQUATE USER_PROC_THREAD_TYPE_INT TO 15;* Thread type expressed as an integer
EQUATE USER_PROC_THREAD_TYPE_TXT TO 16;* Thread type expressed as a text string
EQUATE  USER_PROC_LICENSE TO 17;* License counters
EQUATE USER_PROC_STATS_OPEN TO 18;* Number of OPEN's performed.
EQUATE USER_PROC_STATS_READ TO 19;* Number of READ's performed.
EQUATE USER_PROC_STATS_WRITE TO 20;* Number of WRITE's performed.
EQUATE USER_PROC_STATS_DELETE TO 21;* Number of DELETE's performed.
EQUATE USER_PROC_STATS_CLEARFILE TO 22;* Number of CLEARFILE's performed.
EQUATE USER_PROC_STATS_PERFORM TO 23;* Number of PERFORM's / EXECUTE's performed.
EQUATE USER_PROC_STATS_INPUT TO 24;* Number of INPUT's performed.
EQUATE  USER_PROC_UNUSED_1 TO 25;* Unused
EQUATE USER_PROC_OPEN_FILES_VIRTUAL TO 26;* Number of files application thinks open
EQUATE USER_PROC_OPEN_FILES_REAL TO 27 ;* Number of files really open by OS
EQUATE USER_PROC_USER_ROOT TO 28;* Application data set by @USER.ROOT
EQUATE USER_PROC_PROCESS_TXT TO 29;* Text string to identify process
EQUATE USER_PROC_PROGRAM TO 41;* Program name and command line arguments
EQUATE USER_PROC_LINE_NUMBER TO 42;* Line number currently being executed.
EQUATE USER_PROC_SOURCE_NAME TO 43;* Name of source currently being executed.
EQUATE  USER_PROC_UNUSED_2 TO 44;* Unused
EQUATE  USER_PROC_UNUSED_3 TO 45;* Unused
EQUATE  USER_PROC_STATUS_TXT TO 46;* Status of program as a readable text
EQUATE  USER_PROC_STATUS_INT TO 47;* Status of program as an integer
EQUATE  USER_PROC_CPU_USR TO 48;* User CPU time
EQUATE  USER_PROC_CPU_SYS TO 49;* System CPU time
EQUATE  USER_PROC_CPU_USR_CHILD TO 50;* User CPU time used by child processes
EQUATE  USER_PROC_CPU_SYS_CHILD TO 51;* System CPU time used by child processes
EQUATE  USER_PROC_USER_THREAD TO 52;* Application data set by @USER.THREAD
jBASE Independent Metrics Integration (JIMI)

There are two sides to JIMI:

Locking

CLEAR-ITEM-LOCKS

Use the CLEAR-ITEM-LOCKS command to clear a specific lock or all locks taken against a specific file. Use this command with jBASE hashed files only.

Command Syntax

CLEAR-ITEM-LOCKS filename
CLEAR-ITEM-LOCKS filename, itemname
NOTE: Only a user with root privileges can issue this command. This is a UNIX/LINUX only command.

Refer to the SHOW-ITEM-LOCKS command

If JEDI_NOSHMEM is set (i.e. JEDI_NOSHMEM=1) the CLEAR-ITEM-LOCKS will not function (?)

SHOW-ITEM-LOCKS

The SHOW-ITEM-LOCKS command displays details of locked items in jBASE-hashed files.

Command Syntax

SHOW-ITEM-LOCKS
NOTE: Calling the JBCUserCustomizeDisplay subroutine can customize the output of SHOW-ITEM-LOCKS. Use the CLEAR-ITEM-LOCKS command to explicitly clear a lock.
@USERSTATS

The @USERSTATS allows a program to retrieve miscellaneous information about itself. For example if a program wants to find out how many database I/O's it performed, the following command can be executed.

info1 = @USERSTATS
read1 = info1<19>
EXECUTE 'COUNT fb1 WITH *A1 EQ "x"'
info2 = @USERSTATS
read2 = info2<19>
PRINT "The COUNT took ":(read2-read1):" READ's”

The following definitions have been added to JBC.h file which defines the layout of data returned either through the @USERSTATS variable or by opening file SYSTEM(1027) and reading the items in like that.

* Definitions for the data returned from @USERSTATS variable or from
* the record read from PROC file (using SYSTEM(1027) as file name)
*

EQUATE USER_PROC_PORT_NUMBER TO 1;* The port number
EQUATE USER_PROC_NUM_PROGRAMS TO 2;* Number of programs running in this port
EQUATE USER_PROC_START_TIME TO 3;* Time user started in UTC format
EQUATE USER_PROC_PID TO 4  ;* Process ID
EQUATE USER_PROC_ACCOUNT TO 5;* Name of the account
EQUATE USER_PROC_USER TO 6 ;* Name of the user
EQUATE USER_PROC_TERMINAL_JBASE TO 7;* Name of terminal according to jBASE
EQUATE USER_PROC_TERMINAL_OS TO 8;* Name of terminal as seen by OS
EQUATE USER_PROC_DATABASE TO 9;* Name of database connected to
EQUATE USER_PROC_TTY TO 10;* Name of TTY device
EQUATE USER_PROC_LANGUAGE TO 11;* Language
EQUATE USER_PROC_LISTENING_TIME TO 12;* Time in UTC the listening thread last worked
EQUATE USER_PROC_MEM_FREE TO 13;* Amount of memory in heap space free chain
EQUATE USER_PROC_MEM_USED TO 14;* Amount of heap space memory in use
EQUATE USER_PROC_THREAD_TYPE_INT TO 15;* Thread type expressed as an integer
EQUATE USER_PROC_THREAD_TYPE_TXT TO 16;* Thread type expressed as a text string
EQUATE USER_PROC_LICENSE TO 17;* License counters
EQUATE USER_PROC_STATS_OPEN TO 18;* Number of OPEN's performed.
EQUATE USER_PROC_STATS_READ TO 19;* Number of READ's performed.
EQUATE USER_PROC_STATS_WRITE TO 20;* Number of WRITE's performed.
EQUATE USER_PROC_STATS_DELETE TO 21;* Number of DELETE's performed.
EQUATE USER_PROC_STATS_CLEARFILE TO 22;* Number of CLEARFILE's performed.
EQUATE USER_PROC_STATS_PERFORM TO 23;* Number of PERFORM's / EXECUTE's performed.
EQUATE USER_PROC_STATS_INPUT TO 24;* Number of INPUT's performed.
EQUATE USER_PROC_UNUSED_1 TO 25;* Unused
EQUATE USER_PROC_OPEN_FILES_VIRTUAL TO 26           ;* Number of files application thinks open
EQUATE USER_PROC_OPEN_FILES_REAL TO 27 ;* Number of files really open by OS
EQUATE USER_PROC_USER_ROOT TO 28;* Application data set by @USER.ROOT
EQUATE USER_PROC_PROCESS_TXT TO 29;* Text string to identify process
EQUATE USER_PROC_PROGRAM TO 41;* Program name and command line arguments
EQUATE USER_PROC_LINE_NUMBER TO 42;* Line number currently being executed.
EQUATE USER_PROC_SOURCE_NAME TO 43;* Name of source currently being executed.
EQUATE USER_PROC_UNUSED_2 TO 44;* Unused
EQUATE USER_PROC_UNUSED_3 TO 45;* Unused
EQUATE USER_PROC_STATUS_TXT TO 46;* Status of program as a readable text
EQUATE USER_PROC_STATUS_INT TO 47;* Status of program as an integer
EQUATE USER_PROC_CPU_USR TO 48;* User CPU time
EQUATE USER_PROC_CPU_SYS TO 49;* System CPU time
EQUATE USER_PROC_CPU_USR_CHILD TO 50;* User CPU time used by child processes
EQUATE USER_PROC_CPU_SYS_CHILD TO 51;* System CPU time used by child processes
EQUATE USER_PROC_USER_THREAD TO 52;* Application data set by @USER.THREAD

Windows Telnet (jtelnetd)

BASE is supplied with a windows telnet server to enable users to telnet into a windows server. After connecting to the telnetd service and giving your password you will be logged into the NT system in a simple passthru mode and be sitting at a normal DOS command shell. You may however change the startup program from cmd.exe to any jBASE program including the jsh.exe (jSHELL).

ASCII Code Chart

Dec

Hex

Oct

Bin

Typed

Char

Viewed in HTML

HTML Code

Meaning

0

0x0

00

00000000

^@

NUL

   

Null Character

1

0x1

01

00000001

^A

SOH

   

Cursor Home

2

0x2

02

00000010

^B

STX

     

3

0x3

03

00000011

^C

ETX

     

4

0x4

04

00000100

^D

EOT

     

5

0x5

05

00000101

^E

ENQ

     

6

0x6

06

00000110

^F

ACK

   

Cursor Forward

7

0x7

07

00000111

^G

BEL

   

Bell

8

0x8

010

00001000

^H

BS

   

Erase Last Character

9

0x9

011

00001001

^I

HT

     

10

0xA

012

00001010

^J

LF

   

Cursor Down/Line Feed

11

0xB

013

00001011

^K

VT

   

Vertical Address

12

0xC

014

00001100

^L

FF

   

Form Feed/Screen Erase

13

0xD

015

00001101

^M

CR

   

Carriage Return

14

0xE

016

00001110

^N

SO

     

15

0xF

017

00001111

^O

SI

     

16

0x10

020

00010000

^P

DLE

   

Horizontal Address

17

0x11

021

00010001

^Q

DC1

   

X-ON

18

0x12

022

00010010

^R

DC2

   

Enable Auxiliary Port

19

0x13

023

00010011

^S

DC3

   

X-OFF

20

0x14

024

00010100

^T

DC4

   

Disable Auxiliary Port

21

0x15

025

00010101

^U

NAK

   

Cursor Back

22

0x16

026

00010110

^V

SYN

     

23

0x17

027

00010111

^W

ETB

     

24

0x18

030

00011000

^X

CAN

     

25

0x19

031

00011001

^Y

EM

     

26

0x1A

032

00011010

^Z

SUB

   

Cursor Up

27

0x1B

033

00011011

^[

ESC

     

28

0x1C

034

00011100

^\

FS

     

29

0x1D

035

00011101

^]

GS

     

30

0x1E

036

00011110

^^

RS

     

31

0x1F

037

00011111

^_

US

     

32

0x20

040

00100000

Space

SPC

     

33

0x21

041

00100001

!

!

!

!

 

34

0x22

042

00100010

"

"

"

"

 

35

0x23

043

00100011

#

#

#

#

 

36

0x24

044

00100100

$

$

$

$

 

37

0x25

045

00100101

%

%

%

%

 

38

0x26

046

00100110

&

&

&

&

 

39

0x27

047

00100111

'

'

'

'

 

40

0x28

050

00101000

(

(

(

(

 

41

0x29

051

00101001

)

)

)

)

 

42

0x2A

052

00101010

*

*

*

*

 

43

0x2B

053

00101011

+

+

+

+

 

44

0x2C

054

00101100

,

,

,

,

 

45

0x2D

055

00101101

-

-

-

-

 

46

0x2E

056

00101110

.

.

.

.

 

47

0x2F

057

00101111

/

/

/

/

 

48

0x30

060

00110000

0

0

0

0

 

49

0x31

061

00110001

1

1

1

1

 

50

0x32

062

00110010

2

2

2

2

 

51

0x33

063

00110011

3

3

3

3

 

52

0x34

064

00110100

4

4

4

4

 

53

0x35

065

00110101

5

5

5

5

 

54

0x36

066

00110110

6

6

6

6

 

55

0x37

067

00110111

7

7

7

7

 

56

0x38

070

00111000

8

8

8

8

 

57

0x39

071

00111001

9

9

9

9

 

58

0x3A

072

00111010

:

:

:

:

 

59

0x3B

073

00111011

;

;

;

;

 

60

0x3C

074

00111100

<

<

<

<

 

61

0x3D

075

00111101

=

=

=

=

 

62

0x3E

076

00111110

>

>

>

>

 

63

0x3F

077

00111111

?

?

?

?

 

64

0x40

0100

01000000

@

@

@

@

 

65

0x41

0101

01000001

A

A

A

A

 

66

0x42

0102

01000010

B

B

B

B

 

67

0x43

0103

01000011

C

C

C

C

 

68

0x44

0104

01000100

D

D

D

D

 

69

0x45

0105

01000101

E

E

E

E

 

70

0x46

0106

01000110

F

F

F

F

 

71

0x47

0107

01000111

G

G

G

G

 

72

0x48

0110

01001000

H

H

H

H

 

73

0x49

0111

01001001

I

I

I

I

 

74

0x4A

0112

01001010

J

J

J

J

 

75

0x4B

0113

01001011

K

K

K

K

 

76

0x4C

0114

01001100

L

L

L

L

 

77

0x4D

0115

01001101

M

M

M

M

 

78

0x4E

0116

01001110

N

N

N

N

 

79

0x4F

0117

01001111

O

O

O

O

 

80

0x50

0120

01010000

P

P

P

P

 

81

0x51

0121

01010001

Q

Q

Q

Q

 

82

0x52

0122

01010010

R

R

R

R

 

83

0x53

0123

01010011

S

S

S

S

 

84

0x54

0124

01010100

T

T

T

T

 

85

0x55

0125

01010101

U

U

U

U

 

86

0x56

0126

01010110

V

V

V

V

 

87

0x57

0127

01010111

W

W

W

W

 

88

0x58

0130

01011000

X

X

X

X

 

89

0x59

0131

01011001

Y

Y

Y

Y

 

90

0x5A

0132

01011010

Z

Z

Z

Z

 

91

0x5B

0133

01011011

[

[

[

[

 

92

0x5C

0134

01011100

\

\

\

\

 

93

0x5D

0135

01011101

]

]

]

]

 

94

0x5E

0136

01011110

^

^

^

^

 

95

0x5F

0137

01011111

_

_

_

_

 

96

0x60

0140

01100000

`

`

`

`

 

97

0x61

0141

01100001

a

a

a

a

 

98

0x62

0142

01100010

b

b

b

b

 

99

0x63

0143

01100011

c

c

c

c

 

100

0x64

0144

01100100

d

d

d

d

 

101

0x65

0145

01100101

e

e

e

e

 

102

0x66

0146

01100110

f

f

f

f

 

103

0x67

0147

01100111

g

g

g

g

 

104

0x68

0150

01101000

h

h

h

h

 

105

0x69

0151

01101001

i

i

i

i

 

106

0x6A

0152

01101010

j

j

j

j

 

107

0x6B

0153

01101011

k

k

k

k

 

108

0x6C

0154

01101100

l

l

l

l

 

109

0x6D

0155

01101101

m

m

m

m

 

110

0x6E

0156

01101110

n

n

n

n

 

111

0x6F

0157

01101111

o

o

o

o

 

112

0x70

0160

01110000

p

p

p

p

 

113

0x71

0161

01110001

q

q

q

q

 

114

0x72

0162

01110010

r

r

r

r

 

115

0x73

0163

01110011

s

s

s

s

 

116

0x74

0164

01110100

t

t

t

t

 

117

0x75

0165

01110101

u

u

u

u

 

118

0x76

0166

01110110

v

v

v

v

 

119

0x77

0167

01110111

w

w

w

w

 

120

0x78

0170

01111000

x

x

x

x

 

121

0x79

0171

01111001

y

y

y

y

 

122

0x7A

0172

01111010

z

z

z

z

 

123

0x7B

0173

01111011

{

{

{

{

 

124

0x7C

0174

01111100

         

125

0x7D

0175

01111101

}

}

}

}

 

126

0x7E

0176

01111110

~

~

~

~

 

127

0x7F

0177

01111111

Del

Del

_

 

128

0x80

0200

10000000

M-^@

M-^@

 

129

0x81

0201

10000001

M-^A

M-^A



 

130

0x82

0202

10000010

M-^B

M-^B

 

131

0x83

0203

10000011

M-^C

M-^C

ƒ

 

132

0x84

0204

10000100

M-^D

M-^D

 

133

0x85

0205

10000101

M-^E

M-^E

 

134

0x86

0206

10000110

M-^F

M-^F

 

135

0x87

0207

10000111

M-^G

M-^G

 

136

0x88

0210

10001000

M-^H

M-^H

ˆ

 

137

0x89

0211

10001001

M-^I

M-^I

 

138

0x8A

0212

10001010

M-^J

M-^J

Š

 

139

0x8B

0213

10001011

M-^K

M-^K

 

140

0x8C

0214

10001100

M-^L

M-^L

Œ

 

141

0x8D

0215

10001101

M-^M

M-^M



 

142

0x8E

0216

10001110

M-^N

M-^N

Ž

 

143

0x8F

0217

10001111

M-^O

M-^O



 

144

0x90

0220

10010000

M-^P

M-^P



 

145

0x91

0221

10010001

M-^Q

M-^Q

 

146

0x92

0222

10010010

M-^R

M-^R

 

147

0x93

0223

10010011

M-^S

M-^S

 

148

0x94

0224

10010100

M-^T

M-^T

 

149

0x95

0225

10010101

M-^U

M-^U

 

150

0x96

0226

10010110

M-^V

M-^V

 

151

0x97

0227

10010111

M-^W

M-^W

 

152

0x98

0230

10011000

M-^X

M-^X

˜

 

153

0x99

0231

10011001

M-^Y

M-^Y

 

154

0x9A

0232

10011010

M-^Z

M-^Z

š

 

155

0x9B

0233

10011011

M-^[

M-^[

 

156

0x9C

0234

10011100

M-^\

M-^\

œ

 

157

0x9D

0235

10011101

M-^]

M-^]



 

158

0x9E

0236

10011110

M-^^

M-^^

ž

 

159

0x9F

0237

10011111

M-^_

M-^_

Ÿ

 

160

0xA0

0240

10100000

M-

M-

     

161

0xA1

0241

10100001

M-!

M-!

¡

¡

 

162

0xA2

0242

10100010

M-"

M-"

¢

¢

 

163

0xA3

0243

10100011

M-#

M-#

£

£

 

164

0xA4

0244

10100100

M-$

M-$

¤

¤

 

165

0xA5

0245

10100101

M-%

M-%

¥

¥

 

166

0xA6

0246

10100110

M-&

M-&

¦

¦

 

167

0xA7

0247

10100111

M-'

M-'

§

§

 

168

0xA8

0250

10101000

M-(

M-(

¨

¨

 

169

0xA9

0251

10101001

M-)

M-)

©

©

 

170

0xAA

0252

10101010

M-*

M-*

ª

ª

 

171

0xAB

0253

10101011

M-+

M-+

«

«

 

172

0xAC

0254

10101100

M-,

M-,

¬

¬

 

173

0xAD

0255

10101101

M--

M--

 

­

 

174

0xAE

0256

10101110

M-.

M-.

®

®

 

175

0xAF

0257

10101111

M-/

M-/

¯

¯

 

176

0xB0

0260

10110000

M-0

M-0

°

°

 

177

0xB1

0261

10110001

M-1

M-1

±

±

 

178

0xB2

0262

10110010

M-2

M-2

²

²

 

179

0xB3

0263

10110011

M-3

M-3

³

³

 

180

0xB4

0264

10110100

M-4

M-4

´

´

 

181

0xB5

0265

10110101

M-5

M-5

µ

µ

 

182

0xB6

0266

10110110

M-6

M-6

 

183

0xB7

0267

10110111

M-7

M-7

·

·

 

184

0xB8

0270

10111000

M-8

M-8

¸

¸

 

185

0xB9

0271

10111001

M-9

M-9

¹

¹

 

186

0xBA

0272

10111010

M-:

M-:

º

º

 

187

0xBB

0273

10111011

M-;

M-;

»

»

 

188

0xBC

0274

10111100

M-<

M-<

¼

¼

 

189

0xBD

0275

10111101

M-=

M-=

½

½

 

190

0xBE

0276

10111110

M->

M->

¾

¾

 

191

0xBF

0277

10111111

M-?

M-?

¿

¿

 

192

0xC0

0300

11000000

M-@

M-@

À

À

 

193

0xC1

0301

11000001

M-A

M-A

Á

Á

 

194

0xC2

0302

11000010

M-B

M-B

Â

Â

 

195

0xC3

0303

11000011

M-C

M-C

Ã

Ã

 

196

0xC4

0304

11000100

M-D

M-D

Ä

Ä

 

197

0xC5

0305

11000101

M-E

M-E

Å

Å

 

198

0xC6

0306

11000110

M-F

M-F

Æ

Æ

 

199

0xC7

0307

11000111

M-G

M-G

Ç

Ç

 

200

0xC8

0310

11001000

M-H

M-H

È

È

 

201

0xC9

0311

11001001

M-I

M-I

É

É

 

202

0xCA

0312

11001010

M-J

M-J

Ê

Ê

 

203

0xCB

0313

11001011

M-K

M-K

Ë

Ë

 

204

0xCC

0314

11001100

M-L

M-L

Ì

Ì

 

205

0xCD

0315

11001101

M-M

M-M

Í

Í

 

206

0xCE

0316

11001110

M-N

M-N

Î

Î

 

207

0xCF

0317

11001111

M-O

M-O

Ï

Ï

 

208

0xD0

0320

11010000

M-P

M-P

Ð

Ð

 

209

0xD1

0321

11010001

M-Q

M-Q

Ñ

Ñ

 

210

0xD2

0322

11010010

M-R

M-R

Ò

Ò

 

211

0xD3

0323

11010011

M-S

M-S

Ó

Ó

 

212

0xD4

0324

11010100

M-T

M-T

Ô

Ô

 

213

0xD5

0325

11010101

M-U

M-U

Õ

Õ

 

214

0xD6

0326

11010110

M-V

M-V

Ö

Ö

 

215

0xD7

0327

11010111

M-W

M-W

×

×

 

216

0xD8

0330

11011000

M-X

M-X

Ø

Ø

 

217

0xD9

0331

11011001

M-Y

M-Y

Ù

Ù

 

218

0xDA

0332

11011010

M-Z

M-Z

Ú

Ú

 

219

0xDB

0333

11011011

M-[

M-[

Û

Û

 

220

0xDC

0334

11011100

M-\

M-\

Ü

Ü

 

221

0xDD

0335

11011101

M-]

M-]

Ý

Ý

 

222

0xDE

0336

11011110

M-^

M-^

Þ

Þ

 

223

0xDF

0337

11011111

M-_

M-_

ß

ß

 

224

0xE0

0340

11100000

M-`

M-`

à

à

 

225

0xE1

0341

11100001

M-a

M-a

á

á

 

226

0xE2

0342

11100010

M-b

M-b

â

â

 

227

0xE3

0343

11100011

M-c

M-c

ã

ã

 

228

0xE4

0344

11100100

M-d

M-d

ä

ä

 

229

0xE5

0345

11100101

M-e

M-e

å

å

 

230

0xE6

0346

11100110

M-f

M-f

æ

æ

 

231

0xE7

0347

11100111

M-g

M-g

ç

ç

 

232

0xE8

0350

11101000

M-h

M-h

è

è

 

233

0xE9

0351

11101001

M-i

M-i

é

é

 

234

0xEA

0352

11101010

M-j

M-j

ê

ê

 

235

0xEB

0353

11101011

M-k

M-k

ë

ë

 

236

0xEC

0354

11101100

M-l

M-l

ì

ì

 

237

0xED

0355

11101101

M-m

M-m

í

í

 

238

0xEE

0356

11101110

M-n

M-n

î

î

 

239

0xEF

0357

11101111

M-o

M-o

ï

ï

 

240

0xF0

0360

11110000

M-p

M-p

ð

ð

 

241

0xF1

0361

11110001

M-q

M-q

ñ

ñ

 

242

0xF2

0362

11110010

M-r

M-r

ò

ò

 

243

0xF3

0363

11110011

M-s

M-s

ó

ó

 

244

0xF4

0364

11110100

M-t

M-t

ô

ô

 

245

0xF5

0365

11110101

M-u

M-u

õ

õ

 

246

0xF6

0366

11110110

M-v

M-v

ö

ö

 

247

0xF7

0367

11110111

M-w

M-w

÷

÷

 

248

0xF8

0370

11111000

M-x

M-x

ø

ø

 

249

0xF9

0371

11111001

M-y

M-y

ù

ù

 

250

0xFA

0372

11111010

M-z

M-z

ú

ú

 

251

0xFB

0373

11111011

TM

TM

û

û

Text Mark

252

0xFC

0374

11111100

SVM

SVM

ü

ü

SubValue Mark \

253

0xFD

0375

11111101

VM

VM

ý

ý

Value Mark ]

254

0xFE

0376

11111110

AM

AM

þ

þ

Attribute Mark ^

255

0xFF

0337

11111111

SM

SM

ÿ

 

Segment Mark _


In this topic


Copyright © 2020- Temenos Headquarters SA

Published on :
Wednesday, October 12, 2022 6:56:59 PM IST

Feedback
x