50pixel.gif (47 byte)

HSI (TSMART)

Overview

20pixel.gif (45 byte)HSI (TSMART) module, designed by WHILE1, is a programming tool which can provide primitives to solve issues about data exchange with IBM hosts.

20pixel.gif (45 byte)To do this, we have defined a macro language, named TQL (transaction query language), which quickly and easily specifies how to interact with hosts during login/logout and data exchange phases.

20pixel.gif (45 byte)TSMART is a tool which can communicate with hosts regardless of the logical/physical communication mode, such as, for example HLLAPI, APPC or other interfaces.

20pixel.gif (45 byte)TSMART works using a file containing all information and data about transactions you want to manage. Within that file there will be one or more TQL programs. These programs can be executed according to the transaction you will perform.

 

TQL language

20pixel.gif (45 byte)TQL defines input and output data record layout, determines the name of the files which you will get input data from and the files where you will save data from hosts according to a specified scheme.

20pixel.gif (45 byte)TQL also uses variables (for storing temporary data which will be used during computation) and constants.

20pixel.gif (45 byte)TQL contains basic mechanisms of traditional programming languages, such as for example the use of labels and skip instructions (goto), MOVE instructions, COMPARE instructions, comment lines, etc.

 

THOST interface

20pixel.gif (45 byte)THOST interface is like a classic API (DLL if you are using WINDOWS systems) and provides the user ("C","VBASIC", "COBOL") a tool which can:

  • establish one or more connections with hosts
  • synchronize with applications and/or commands for hosts
  • exchange data in formatted mode (e.g. 3270) and unformatted mode (e.g. APPC)
  • directly integrate with TSMART module for running script files written in TQL.

20pixel.gif (45 byte)With the combination of the two products, TSMART and THOST, you can write applications which synergically and efficiently interface:

  1. You can create a script for TSMART and, after the login phase, get the desired transaction. Using a THOST primitive, you can start a TSMART script.
  2. Calling THOST primitives you can execute the selected transaction and manage different input/output situations on IMB 3270 presentations space screen fields.
  3. You can also call TSMART to perform the whole LOGOUT phase.

20pixel.gif (45 byte)THOST primitives look like TQL language statements. No further study or expertise is needed to use them.

20pixel.gif (45 byte)One of the important aspects of THOST interface architecture is that it lets you interface with an host through not only HLLAPI, but also using other connection systems without affecting the applications that use it.

fig-HSI1.gif (5507 bytes)

The following is an example of TQL:

 

#
# XX21 script
#
# This script uses XX21 transaction
#
#
# Device selector
#

device ehllapi

#
# Local defines
#

define title "18580"

define option "51"
#
# Login input data
#

login_XX21 scheme

{

# position/len name
0-6 userid_1
6-1 userid_2
7-5 password
12-8 New_Amb
20-3 tpl

}

#
# Input data file
#

 

input_XX21 scheme

{

# position/len name

0-8 title
8-2 option

}

#
# Output data file
#

output_XX21 scheme

{

# position/len name

0-10 code
10-25 description
35-8 array
43-45 err_code

}

 

 

#
# XX21 transaction

transaction XX21

{

rdrec(login_XX21)

recv(* * User 60)

write(17 30 $login_XX21.userid_1)

write(17 36 $login_XX21.userid_2)

write(17 57 $login_XX21.New_Amb)

send(18 30 $login_XX21.password)

recv(* * COMMAND 60)

send(23 14 $login_XX21.tpl)

write(1 1 @C)

write(1 1 @C)

label(loop)

rdrec(input_XX21)

test(ok_read finish)

label(ok_read)

send(1 1 XX21)

recv(* * ADDRESS: 60)

send(6 17 $input_XX21.title)

recv(* * XX21 10)

test(read_cod wr_error)

 

label(read_cod)

read(3 16 8 60 $output_XX21.code)

read(3 44 25 -1 $output_XX21.description)

read(3 16 8 -1 $output_XX21.array)

write(1 1 @C)

write(1 1 @C)

wrrec(output_XX21)

goto(loop)

 

label(wr_error)

read(23 6 45 $output_XX21.err_code)

read(6 17 8 $output_XX21.code)

wrrec(output_XX21)

goto(loop)

 

label(finish)

exit(0)

 

label(error)

exit(-1)

}


Up to LAN  *   TSI  *  RGI    *  HOME

50pixel.gif (47 byte)