Psjylife
25 pts. | Oct 28 2009 2:11AM GMT
Hey Tom!
Thanks for your answer, it’s a big help.
Your last command STRQSH CMD( ‘grep “pattern” my_file’ ) would be quite good.
The only thing I need now is to define the status.
I’d like to have a CLP program doing:
STRQSH CMD( ‘grep “pattern” my_file’ )
IF (pattern found) THEN DO ACTION_OK
ELSE DO ACTION NOT_OK
END
Do you think it’s possible to pass a value from the qsh execution to the CLP?
If I use STRQSH I can get the return code of the command:
cp tutu tut cp: 001-2113 Error found getting information for object tutu. No such path or directory $
> echo $?
1 => 1 means NOT OK
ls BYPASS.SAVF src.data f00063.tmp
> echo $?
0 => 0 means OK
Thanks again
TomLiotta
15455 pts. | Oct 28 2009 7:01AM GMT
Given my lack of time, I’ll point this out for now — V5R4 Qshell basic docs.
Without knowing something about what you need to do in [DO ACTION_OK/NOT_OK], I can’t suggest the better course. It’s possible you simply want the action to be done inside Qshell before dropping back out of the shell.
More time later tomorrow.
Tom
Psjylife
25 pts. | Nov 3 2009 12:10PM GMT
Here is the final code that works!
QSH to grep and then check the msg.
Thanks for your help and hope this can help smbdy
/* ————————————————————— */
/* LOG PARSING */
/* ————————————————————— */
/* IF VARIABLES WERE SET PREVIOUSLY, REMOVE THEM SO THAT OUR +
ADDENVVAR COMMANDS WORK. */
STEPLP:
RMVENVVAR ENVVAR(QIBM_QSH_CMD_OUTPUT)
MONMSG MSGID(CPFA981) /* ENVVAR DOES NOT EXIST */
RMVENVVAR ENVVAR(QIBM_QSH_CMD_ESCAPE_MSG)
MONMSG MSGID(CPFA981) /* ENVVAR DOES NOT EXIST */
/* SET THE COMMAND OUTPUT TO NONE, AND TELL QSH TO ISSUE +
ESCAPE MESSAGES FOR ERRORS. */
ADDENVVAR ENVVAR(QIBM_QSH_CMD_OUTPUT) VALUE(NONE)
ADDENVVAR ENVVAR(QIBM_QSH_CMD_ESCAPE_MSG) VALUE(Y)
/* EXECUTE OUR QSHELL COMMAND */
CHGVAR VAR(&GREP_CMD) VALUE(’grep -i “‘ +
*TCAT &GREP_MSG *TCAT ‘” ‘ *CAT &LOGFILE)
/* CALL PGM(UXSET) PARM(’msg’ &GREP_CMD) */
STRQSH CMD(&GREP_CMD)
/* HANDLE ERRORS. */
MONMSG MSGID(QSH0005 QSH0006 QSH0007) EXEC(DO)
RCVMSG MSGTYPE(*LAST) RMV(*YES) MSGDTA(&MSGDTA) +
MSGID(&MSGID)
/* CPF0005 - QSHELL COMMAND ENDED “NORMALLY.” */
IF (&MSGID *EQ ‘QSH0005′) DO
CHGVAR VAR(&RESULT) VALUE(%SST(&MSGDTA 1 4))
CHGVAR VAR(&STATUS) VALUE(%BIN(&RESULT))
CHGVAR VAR(&SIGNAL) VALUE(0)
ENDDO
/* QSH0006 - QSHELL COMMAND ENDED WHEN IT RECEIVED A +
SIGNAL. */
IF (&MSGID *EQ ‘QSH0006′) DO
CHGVAR VAR(&RESULT) VALUE(%SST(&MSGDTA 1 4))
CHGVAR VAR(&SIGNAL) VALUE(%BIN(&RESULT))
CHGVAR VAR(&STATUS) VALUE(-1)
ENDDO
/* QSH0007 - QSHELL COMMAND ENDED DUE TO AN EXCEPTION, +
FOR EXAMPLE THE PROGRAM CRASHED WITH A CPF MSG. */
IF (&MSGID *EQ ‘QSH0007′) DO
CHGVAR VAR(&STATUS) VALUE(-1)
CHGVAR VAR(&SIGNAL) VALUE(-1)
ENDDO
ENDDO
/* WHEN &STATUS IS NOT ZERO, WE KNOW OUR GREP COMMAND. +
FAILED: KEYWORD WAS NOT FOUND. */
/* DISPLAY MESSAGE */
IF (&STATUS *EQ 0) THEN(DO)
CHGVAR VAR(&MSGTXT) VALUE(’Enhanced Status Management: “‘ +
*TCAT &GREP_MSG *TCAT ‘” found in ‘ +
*CAT &LOGFILE *TCAT ‘ ‘)
ENDDO
IF (&STATUS *NE 0) THEN(DO)
CHGVAR VAR(&MSGTXT) VALUE(’Enhanced Status Management: “‘ +
*TCAT &GREP_MSG *TCAT ‘” not found in ‘ +
*CAT &LOGFILE *TCAT ‘ ‘)
ENDDO
JenniC
70 pts. | Nov 5 2009 6:08PM GMT
In biterscripting
var str file ; set $file="C:/file.txt”
var str pattern ; set $pattern = “abc”
var str content ; cat $file > $content
if ( { sen (”^”+$pattern+”^”) $content } > 0 )
echo “PATTERN IS PRESENT.”
else
echo “PATTERN IS NOT PRESENT.”
endif
The help page for the sen (string enumerator) command is at .






