View previous topic :: View next topic
|
Author |
Message |
mpawan Warnings : 2 New User
Joined: 03 Nov 2008 Posts: 42 Location: Pune
|
|
|
|
Hi
I have to automated one of my system and i am calling a subroutine through my code and that subroutine runs for 31 times. My concern is that i have to press enter 31 times to get the final message and the option of "do you want to continue?". As i am doing automation the pressing of enter button is not feisibe because it requires presence of anyone.
Following is the code for your reference
Code: |
/* REXX */
OPTION = Y
DO WHILE OPTION='Y'
CLRSCRN
SAY '***WELCOME TO CMDS AUTOMATED SYSTEM***'
SAY 'ENTER 5 DIGIT CYCLE DATE(YYDDD)'
PULL YYDDD
PARSE VAR YYDDD YEAR 3 DAY
IF DAY > 0 & DAY < 366 THEN
DO
"ALLOC DA('TOLLNA.T.N2100.N2100081.C"YYDDD"01') F(INPUT) SHR REUSE"
'EXECIO * DISKR INPUT (STEM LINES. OPEN'
COUNT = LINES.0 ; I = 0 ; J=0
DO UNTIL I > COUNT
REC=LINES.I
PARSE VAR REC ONE TWO THR FRT FIV SIX SEV EIG NIN TEN GAR
IF FIV='INVALID' THEN
DO
PARSE VAR TWO A 5 B 7 C 13 D 15 E 20 F 23 G 26 H
LINES.I= " "A" "C" "F" "G" "D" "TEN
QUEUE LINES.I
J=J+1
END
I=I+1
END
NV.1=" PACKID PACKDATE SENDRAO BILLRAO INVOICE EXPECTED-INVOICE"
"ALLOC DA('TOLLNA.T.TEST.REPORT') F(MYOUTDD) SHR REUSE"
"EXECIO 1 DISKW MYOUTDD (STEM NV."
"EXECIO * DISKW MYOUTDD (FINIS"
'EXECIO * DISKR INPUT (FINIS'
IF J = 0 THEN
SAY "NO PACKS ARE REJECTED"
ELSE
DO
SAY J "PACKS ARE REJECTED"
NDAY = DAY - 1
NDAY ="0"NDAY
"ALLOC DA('TOLLNA.T.TEST.REPORT') F(INPUT) SHR REUSE"
'EXECIO * DISKR INPUT (STEM LINES1. OPEN'
LOOP = LINES1.0 ; K = 2
DO UNTIL K > LOOP
REC1 = LINES1.K
PARSE VAR REC1 PACK DAT SRAO BRAO INV EINV GAR
CALL RECEXT
K=K+1
END
/*SUBMIT 'PM863D.CMDS.AUTO(EMAILFIL)'"*/
SAY "REPORT HAS GENERATED @ PDS TOLLNA.T.TEST.REPORT"
SAY "A COPY OF THE REPORT HAS BEEN E-MAILED"
END
END
ELSE
SAY 'INVALID CYCLE DATE,PLEASE ENTER JULIAN CYCLE DATE'
SAY 'DO YOU WANT TO CONTINUE(Y/N)'
PULL OPTION
END
EXIT |
RECEXT:
Code: |
DATASET ="TOLLNA.T.G861000.G8610A11.WCOGET.C"YEAR""NDAY"01"
"ALLOC FI(INPUT1) DA('"DATASET"') SHR REUSE"
"EXECIO * DISKR INPUT1 (STEM LINES. OPEN"
COUNT = LINES.0 ; I = 0 ; START=0 ; STOP=0
DO UNTIL I > COUNT
REC=LINES.I
PARSE VAR REC A 13 INVT 15 GAR 20 RAO1 23 RAO2 26
IF INVT = INV & RAO1 = SRAO & RAO2 = BRAO THEN
DO
IF START = 0 THEN
DO
START = I
END
ELSE
DO
STOP = I
END
END
I=I+1
END
DO UNTIL STOP < START
QUEUE LINES.START
START = START + 1
END
DATASET1="TOLLNA.T.SRAO"SRAO".BRAO"BRAO".C"YEAR""DAY"01"
"ALLOC DA('"DATASET1"') F(MYOUTDD) LIKE('"DATASET"') NEW REUSE"
"EXECIO * DISKW MYOUTDD (FINIS"
"EXECIO 0 DISKR INPUT1 (FINIS"
RETURN |
|
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
Code: |
'EXECIO * DISKR INPUT (STEM LINES. OPEN'
COUNT = LINES.0 ; I = 0 ; J=0
DO UNTIL I > COUNT
REC=LINES.I |
the sequence is a bit poor
use
Code: |
'EXECIO * DISKR INPUT (STEM LINES. FINIS' |
why not use a simpler
the way You coded it' s treating LINES.0 as a data line,
but LINES.0 contains the number of records read |
|
Back to top |
|
|
mpawan Warnings : 2 New User
Joined: 03 Nov 2008 Posts: 42 Location: Pune
|
|
|
|
Still it is not working... |
|
Back to top |
|
|
superk
Global Moderator
Joined: 26 Apr 2004 Posts: 4652 Location: Raleigh, NC, USA
|
|
|
|
Here's one problem:
NV.1=" PACKID PACKDATE SENDRAO BILLRAO INVOICE EXPECTED-INVOICE"
"ALLOC DA('TOLLNA.T.TEST.REPORT') F(MYOUTDD) SHR REUSE"
"EXECIO 1 DISKW MYOUTDD (STEM NV."
"EXECIO * DISKW MYOUTDD (FINIS"
'EXECIO * DISKR INPUT (FINIS'
You set the stem variable NV.1 to the string shown. Then you use EXECIO to write 1 record from the NV. stem. Then you use EXECIO again with an asterisk (*) specifying an unknown quantity of records, and DISKW to write. Write what? EXECIO is attempting to write everything that's in the data stack. I don't see where anything has "PUSH"ed or "QUEUE"'d to the stack, so EXECIO is expecting you to enter the data from the terminal.
I'd suggest that you get rid of this line of code alltogether. |
|
Back to top |
|
|
superk
Global Moderator
Joined: 26 Apr 2004 Posts: 4652 Location: Raleigh, NC, USA
|
|
|
|
I'd recode this:
NV.1=" PACKID PACKDATE SENDRAO BILLRAO INVOICE EXPECTED-INVOICE"
"ALLOC DA('TOLLNA.T.TEST.REPORT') F(MYOUTDD) SHR REUSE"
"EXECIO 1 DISKW MYOUTDD (STEM NV."
"EXECIO * DISKW MYOUTDD (FINIS"
'EXECIO * DISKR INPUT (FINIS'
IF J = 0 THEN
SAY "NO PACKS ARE REJECTED"
...
to this:
PUSH " PACKID PACKDATE SENDRAO BILLRAO INVOICE EXPECTED-INVOICE"
"ALLOC DA('TOLLNA.T.TEST.REPORT') F(MYOUTDD) SHR REUSE"
"EXECIO 1 DISKW MYOUTDD (FINIS"
IF J = 0 THEN
SAY "NO PACKS ARE REJECTED"
... |
|
Back to top |
|
|
mpawan Warnings : 2 New User
Joined: 03 Nov 2008 Posts: 42 Location: Pune
|
|
|
|
I have recoded the code like
PUSH " PACKID PACKDATE SENDRAO BILLRAO INVOICE EXPECTED-INVOICE"
"ALLOC DA('TOLLNA.T.TEST.REPORT') F(MYOUTDD) SHR REUSE"
"EXECIO 1 DISKW MYOUTDD (FINIS"
IF J = 0 THEN
SAY "NO PACKS ARE REJECTED"
Due to this only one record is been written in the 'TOLLNA.T.TEST.REPORT' file . .. instead i have recoded it like
PUSH " PACKID PACKDATE SENDRAO BILLRAO INVOICE EXPECTED-INVOICE"
"ALLOC DA('TOLLNA.T.TEST.REPORT') F(MYOUTDD) SHR REUSE"
'EXECIO 'j' DISKW MYOUTDD (FINIS'
IF J = 0 THEN
SAY "NO PACKS ARE REJECTED"
Still it is not working .... |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2547 Location: Silicon Valley
|
|
|
|
I do not see where you followed Enrico's advice. Can you post your most recent program?
Quote: |
Still it is not working .... |
Not very clear diagnostic information. |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2547 Location: Silicon Valley
|
|
|
|
Code: |
SAY '***WELCOME TO CMDS AUTOMATED SYSTEM***'
SAY 'ENTER 5 DIGIT CYCLE DATE(YYDDD)'
PULL YYDDD |
If this is for automation, why are you displaying welcome text and expecting input? |
|
Back to top |
|
|
mpawan Warnings : 2 New User
Joined: 03 Nov 2008 Posts: 42 Location: Pune
|
|
|
|
I am automating the process which is coded in the logic. Still it needs basic input like cycle date to initialte the process in test region, once i am done with the coding i can move this in production region and make it a dataset triggered and code according to it. |
|
Back to top |
|
|
|