HPlogo SNA IMF Programmer's Reference Manual: HP 3000 MPE/iX Computer Systems > Chapter 3 Intrinsics Used with Standard MPE I/O

STREAM3270

» 

Technical documentation

» Feedback

 » Table of Contents

 » Glossary

 » Index

STREAM3270 emulates typing a series of keystrokes on an IBM 3278 display station keyboard.

                      I           I          I          CA
STREAM3270       (terminalid, cursorrow, cursorcolumn, outbuf,
                      I          I          I
                 outbuflen, numprocessed, result)

Parameters

terminalid (input)

Integer identifying the terminal. The terminalid is returned in a call to the OPEN3270 intrinsic.

cursorrow (input and then output)

Integer indicating the row where the cursor: is located

0 through 11 (480-character screen)

0 through 23 (1920-character screen)

0 through 42 (3440-character screen)

When passed (input), the cursor is placed at the position you specify. When returned (output), cursorrow is set to the final location of the cursor after data has been entered. (The cursor moves as data is entered, as if the data were being typed at a keyboard.)

cursorcolumn (input and then output)

Integer indicating the column where the cursor is located:

0 through 39 (480-character screen)

0 through 79 (1920-character screen)

0 through 79 (3440-character screen)

When passed (input), the cursor is placed at the position you specify. When returned (output), cursorcolumn is set to the final location of the cursor after data has been entered. (The cursor moves as data is entered, as if the data were being typed at a keyboard.)

outbuf (input)

Character array containing simulated keyboard input. The allowable character codes are as follows:

23 through 176 (octal)

241 through 377 (octal)

13 through 7E (hexadecimal)

A1 through FF (hexadecimal)

An illegal character code causes the remainder of outbuf to be ignored. Most character codes are data that will be entered into a field. Remaining character codes manipulate the internal screen image or its state. If you attempt to enter data into a protected field, the result parameter returns 10, and input is not disabled.

You can use the end-of-stream character (octal 23) to terminate the outbuf string before outbuflen characters are put into the internal screen image. The numprocessed parameter indicates the number of characters in outbuf that were successfully processed. The end-of-stream character is not included in the count returned in numprocessed.

Except for the end-of-stream character, each character code is equivalent to a key on a 3278 keyboard. Table 3-2 “Setting Up LU.T1 or LU.T3 Emulation” lists the hexadecimal and octal values allowed in the outbuf string, and it gives the equivalent 3278 key for each value.

Table 3-3 STREAM3270 Character Codes

Hexadecimal Code

Octal Code

Equivalent 3280 Key

1424[ERASE INPUT]
1525[ERASE EOF]
1626Tab key
1727Back tab key
1830Back space
1931Cursor (right)
1A32Cursor (up)
1B33Cursor (down)
1C34[DUP]
1D35[HOME]
1E36[Field Mark]
1F37[RESET] (use as first character of outbuf only)
20-7E38-176ASCII graphic characters
7F-A0177-240invalid codes

 

outbuflen (input)

Integer specifying the length of the outbuf string, in characters.

numprocessed (output)

Integer indicating the number of successfully processed characters in outbuf. The count does not include the end-of-stream character (octal 23).

result (output)

The following values can be generated by the STREAM3270 intrinsic:

0 = Successful completion.

1 = Device not open.

9 = Host modified screen since last receive request. (MPE V only)

10 = Attempt made to update a protected field.

12 = Invalid character in field or data stream.

14 = Attempt made to update a field or transmit from an LU.T3 printer.

16 = Invalid cursor address was specified.

17 = Attempt made to write to a field where input is inhibited.

22 = BASIC calling sequence error has occurred.

25 = Intrinsic call made while in split stack mode.

26 = Intrinsic call made with the parameter value out of bounds.

29 = Called intrinsic with a request already outstanding. (No-wait I/O only)

30 = Internal error occurred in IMF intrinsic.

38 = Cannot start OUTBUF on an attribute byte.

53 = Invalid intrinsic called for data stream mode device.

Description

The STREAM3270 intrinsic accepts an array of characters (the outbuf parameter), interprets it as a series of keystrokes, and applies the keystrokes to the internal screen image. STREAM3270 lets you enter data into any unprotected field, erase data, and enable the keyboard.

You can use either STREAM3270 or WRITEFIELD to enter data into your internal screen image. The WRITEFIELD intrinsic allows you to access a field by its number and write only to that field. The STREAM3270 intrinsic allows you to move across the internal screen image and enter data into more than one field with a single intrinsic call.

STREAM3270 does not cause data to be sent to the host; it just modifies the internal screen image. Use TRAN3270 to send the internal screen image to the host.

You can move the cursor in two ways: (1) by setting the initial cursor location in the cursorrow and cursorcolumn parameters, and (2) by using the octal codes in the outbuf parameter to move the cursor within your data stream. Because it simulates keyboard input, STREAM3270 moves the cursor as it enters data into the internal screen image. The cursorrow and cursorcolumn parameters return the final position of the cursor.

STREAM3270 does not permit you to write over an attribute character or to update a protected field. You will receive result code 38 if you attempt to start STREAM3270 on an attribute character. If STREAM3270 finds an attribute character in outbuf while it is writing into a screen, it automatically skips over the character. If the next character in outbuf is a data character, STREAM3270 writes the character in the next field (assuming it is unprotected). If the field is protected, your program receives result code 10.

Call the STREAM3270 intrinsic in non-transparent mode.

COBOL Calling Sequence

CALL "CSTREAM3270" USING TERMINALID CURSORROW CURSORCOLUMN OUTBUF OUTBUFLEN NUMPROCESSED RESULT. (on MPE V and in compatibility mode on MPE XL)

CALL INTRINSIC "STREAM3270" USING TERMINALID CURSORROW CURSORCOLUMN OUTBUF OUTBUFLEN NUMPROCESSED RESULT. (in native mode on MPE XL)

All parameters are numeric data items except OUTBUF, which is an alphanumeric data item.

FORTRAN Calling Sequence

CALL STREAM3270 (TERMINALID, CURSORROW, CURSORCOLUMN, OUTBUF, OUTBUFLEN, NUMPROCESSED, RESULT)

All parameters are integer variables except for OUTBUF, which is a character array.

BASIC Calling Sequence

CALL BSTREAM3270 (T, R9, C9, O$, L9, N5, R) (on MPE V and in compatibility mode on MPE XL)

CALL STREAM3270 (T, R9, C9, O$, L9, N5, R) (in native mode on MPE XL)

All parameters are integer variables except for O$, which is a string variable.

SPL Calling Sequence

STREAM3270 (TERMINALID, CURSORROW, CURSORCOLUMN, OUTBUF, OUTBUFLEN, NUMPROCESSED, RESULT)

All parameters are integer variables except OUTBUF, which is a byte array.

Pascal Calling Sequence

STREAM3270 (TERMINALID, CURSORROW, CURSORCOLUMN, OUTBUF, OUTBUFLEN, NUMPROCESSED, RESULT);

All parameters are short integer variables except OUTBUF, which is a packed array of char.

C/XL Calling Sequence

STREAM3270 (&TERMINALID, &CURSORROW, &CURSORCOLUMN, OUTBUF, &OUTBUFLEN, &NUMPROCESSED, &RESULT);

All parameters are of type short, except OUTBUF, which is an array of characters (a pointer to a char).

Pascal Program Excerpts

Following are excerpts from a Pascal program that calls SNA IMF intrinsics. For examples of complete Pascal programs in non-transparent and transparent modes, see Appendix F “Sample Programs”

{************************** Global Declarations **************************}type   shortint      = -32768..32767;       { global type, two bytes (half word) }...var   terminalid    : shortint;          { value returned by OPEN3270 intrinsic }   result        : shortint;   cursorrow     : shortint;   cursorcolumn  : shortint;...procedure STREAM3270;  intrinsic;...{************************** Local Declarations **************************}var   outbuf        : packed array[1..MAXBUFSIZE] of char;   { The variables }   outbuflen     : shortint;             { terminalid, result, cursorrow, }   numprocessed  : shortint;                  { and cursorcolumn are global. }...{************** Variable Initialization and Intrinsic Call **************}outbuflen := 51;outbuf := 'logon applid(tso) data(sales/sales) logmode(imf2k) ';                       { Assume that cursorrow and cursorcolumn }                       { are set outside of this local procedure. }STREAM3270 (terminalid, cursorrow, cursorcolumn, outbuf, outbuflen,            numprocessed, result);
Feedback to webmaster