Examples of the IMFEXEC IMFC command
This section contains examples that use the IMFEXEC IMFC command statement.
A brief discussion follows each example.
Example 1
This example shows a REXX EXEC issuing the IMFC OSTAT service.
LAST = '' /* FOR THE FIRST TIME */
LOOP:
IF LAST = '' THEN 'IMFEXEC IMFC OSTAT LTERM=B* TARGET=IMS41X'
ELSE 'IMFEXEC IMFC OSTAT LTERM=B* START='LAST' TARGET=IMS41X'
I = 4
DO WHILE I <= 24
'IMFEXEC VGET LINE'I' LOCAL'
IF SUBSTR(VALUE('LINE'I),67,9) = 'CONNECTED' THEN
DO
TERM = SUBSTR(VALUE('LINE'I),2,8)
IF 'LINE'I = 'LINE24' THEN NOP /* LINE24 WILL BE INCLUDED IN NEXT */
ELSE
'IMFEXEC MSG 'TERMINAL 'TERM' IS NOT CONNECTED''
END
ELSE NOP
I = I + 1
END
LAST = SUBSTR(VALUE('LINE24'),2,8) /* LAST TERMINAL ON THE SCREEN */
IF LAST ,= '' THEN SIGNAL LOOP;
ELSE EXIT
The EXEC loops until there is no more data and checks the terminals with the status: NOT CONNECTED. For these terminals, it issues message on the BBI LOG.
CLIST example:
SET &LAST = ''
LOOP: +
IF &LAST = '' THEN IMFEXEC IMFC OSTAT LTERM=B* TARGET=IMS41X
ELSE IMFEXEC IMFC OSTAT LTERM=B* START=&LAST TARGET=IMS41X
SET &I = 4
DO WHILE &I <= 24
IMFEXEC VGET LINE&I LOCAL
IF &SUBSTR(&SYSNSUB(2,&&LINE&I),67,9) = 'CONNECTED' THEN DO
TERM = &SUBSTR(&SYSNSUB(2,&&LINE&I),2,8)
IF &&LINE&I = 'LINE24' THEN NOP
ELSE
IMFEXEC MSG 'TERMINAL &TERM IS NOT CONNECTED'
END
ELSE NOP
SET &I = &I + 1
END
SET &LAST = &SUBSTR(&LINE24,2,8)
IF &LAST [= '' THEN GOTO LOOP;
ELSE EXIT
Example 2
This example shows a REXX EXEC that issues the IMFC USER service with a parameter of RESPINP. The RESPINP parameter is used for IMS terminals in response input mode. The USER service is a scrollable service.
'IMFEXEC VGET QIMSNAME'
'IMFEXEC IMFC USER RESPINP TARGET='QIMSNAME' IMAGE=NO'
DO I = 8 TO 43
'IMFEXEC VDCL IMFL'I' LIST(V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11)'
'IMFEXEC VGET LINE'I' INTO(IMFL'I') LOCAL'
'IMFEXEC MSG .. 'V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11'''
IF SUBSTR(V1,1,3) = '***' THEN EXIT
END
DO 900
'IMFEXEC IMFC USER RESPINP TARGET='QIMSNAME' IMAGE=NO SCROLL=YES'
DO I = 8 TO 43
'IMFEXEC VDCL IMFL'I' LIST(V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11)'
'IMFEXEC VGET LINE'I' INTO(IMFL'I') LOCAL'
'IMFEXEC MSG .. 'V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11'''
IF SUBSTR(V1,1,3) = '***' THEN EXIT
END
END
The REXX EXEC scheduled with the SELECT command, FREERSP, issues IMS commands to display, stop, dequeue and start the terminals. Note that for multiple screens of data returned, the IMFC service returns the screen in local variables LINE8 through LINE43, and then places the next screen in the same variables, LINE8 through LINE43.
CLIST example:
IMFEXEC VGET QIMSNAME
IMFEXEC IMFC USER RESPINP TARGET=&QIMSNAME IMAGE=NO
DO I = 8 TO 43
IMFEXEC VDCL IMFL&I LIST(V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11)
IMFEXEC VGET LINE&I INTO(IMFL&I) LOCAL
IF &SUBSTR(&V1,1,3) = '***' THEN EXIT
END
SET &END = NO
DO UNTIL &END = YES
IMFEXEC IMFC USER RESPINP TARGET=&QIMSNAME IMAGE=NO SCROLL=YES
DO I = 8 TO 43
IMFEXEC VDCL IMFL&I LIST(V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11)
IMFEXEC VGET LINE&I INTO(IMFL&) LOCAL
IF &SUBSTR(&V1,1,3) = '***' THEN SET &END = YES END
END