Exspans Systems Inc Logo home
 
Forum
Sign up Calendar Latest Topics
 
 
 


Reply
  Author   Comment   Page 4 of 6      Prev   1   2   3   4   5   6   Next
Zamin

Avatar / Picture

Member
Registered:
Posts: 67
Reply with quote  #46 
Sorry automan, you are not completely correct. His return code from the FREE is "69206016".

If you check 26.3.2 Interpreting Error Reason Codes from DYNALLOC in the Authorized Assembler Services Guide you will see:

6 Used for internal diagnostic purposes only. Record this code and supply it to the appropriate IBM support personnel.

He needs to contact IBM support, like Grazillda said. I doubt whether it is in the IRXJCL, you are probably right that it has not changed. It most likely means that BPXWDYN is not assembling the correct S99 structure for the dynamic unallocation in that particular version of z/OS.


0
automan

Avatar / Picture

Moderator
Registered:
Posts: 136
Reply with quote  #47 
Zamin, I am sorry to say you are a dumbass. Rexx translates the return codes to decimal. That code is 0420 0000 in hex, which means the dataset is still open, when the unallocate is issued. All he has to do is close the file before unallocating it.
0
automan

Avatar / Picture

Moderator
Registered:
Posts: 136
Reply with quote  #48 
rakesh, don't take any notice of Zamin and Grizellda's comments. I had one of my interns run your code and figure out what is needed. Do this:

/*REXX*/
TRACE 'R'
CALL BPXWDYN ("ALLOC FI(OUTPUT) DA('DUMP.USERS.JOBS.INFO') MOD")
PARSE SOURCE SRC
ARG JOBN, JOBID, JOBTIM
STEM1.1 = JOBTIM JOBN JOBID
"EXECIO * DISKW OUTPUT (STEM STEM1. "
"EXECIO 0 DISKW OUTPUT (FINIS)"
CALL BPXWDYN "FREE FI(OUTPUT)"
EXIT

The second EXECIO closes the file so that it can be unallocated.
0
rakesh

Member
Registered:
Posts: 52
Reply with quote  #49 
Perfect. it's working now with that extra EXECIO statement.

Thanks you folks. I will try to write some crazy scripts here and will let you know if any assistance needed.

Thanks again
0
automan

Avatar / Picture

Moderator
Registered:
Posts: 136
Reply with quote  #50 
You are welcome rakesh. We might be a bit slow but we always get there. We are always happy to help people who want to learn. Feel free to post any questions, observations or suggestions.
0
rakesh

Member
Registered:
Posts: 52
Reply with quote  #51 
Hi,

Can we configure Automan to monitor messages coming out of a specific DD instead of syslog?
CICS writes few messages to DDs which doesn't come to syslog. Can we configure Automan to monitor those message and take necessary actions?

Thank you
0
automan

Avatar / Picture

Moderator
Registered:
Posts: 136
Reply with quote  #52 
Yes, that is exactly what the SYSOUT function is for. However that function came out with V2.10 so is not enabled in the copy you have.
0
Zamin

Avatar / Picture

Member
Registered:
Posts: 67
Reply with quote  #53 
The SYSOUT function is very valuable to me. We have an internal web service which has to be up all the time. It writes diagnostics to a private dataset. They are supposed to be to trace the source of errors if a breakdown happens. We use those messages as potentially predictive and when we see certain situations being recorded we take proactive actions to prevent a breakdown.
0
rakesh

Member
Registered:
Posts: 52
Reply with quote  #54 
I am unlucky then. That is fine. Not so important but good to have kind for me.

I am facing new issue today.

I want to track all the security errors and write to dataset.

ICH408I USER(SHRDV10 ) GROUP(USERGRP ) NAME(TRAINING USERID )
ADCD.Z110.PARMLIB CL(DATASET ) VOL(ZARES1)
INSUFFICIENT ACCESS AUTHORITY
FROM ADCD.* (G)
ACCESS INTENT(UPDATE ) ACCESS ALLOWED(READ )
IEC150I 913-38,IFG0194E,SHRDV10,DBSPROC,ISP20023,0A81,ZARES1,ADCD.Z110.PARMLIB

Instead of writing 1 line at a time using REXX, is there a feature of Arrays or stem of variables in GAL? that way i can write stem.1 to stem.7 using MSGTXT(1) to MSGTXT(7) and just pass the stem to REXX? or am i crazy for asking such a requirement?

Below is the code i wrote for now.

MSG=ICH408I
VAR <XT1 LEN 80
VAR <XT2 LEN 80
VAR <XT3 LEN 80
VAR <XT4 LEN 80
VAR <XT5 LEN 80
VAR <XT6 LEN 80
VAR <XT7 LEN 80
LET <XT1 = $$MSGTXT(1) /* GET LINE OF MESSAGE */
LET <XT2 = $$MSGTXT(2) /* GET LINE OF MESSAGE */
LET <XT3 = $$MSGTXT(3) /* GET LINE OF MESSAGE */
LET <XT4 = $$MSGTXT(4) /* GET LINE OF MESSAGE */
LET <XT5 = $$MSGTXT(5) /* GET LINE OF MESSAGE */
LET <XT6 = $$MSGTXT(6) /* GET LINE OF MESSAGE */
LET <XT7 = $$MSGTXT(7) /* GET LINE OF MESSAGE */
REXX SECFAILS (<XT1,<XT2,<XT3,<XT4,<XT5,<XT6,<XT7)


And REXX is:

CALL BPXWDYN ("ALLOC FI(OUTPUT) DA('DUMP.USERS.SECFAILS.INFO') MOD")
PARSE SOURCE SRC
ARG LTXT1,LTXT2,LTXT3,LTXT4,LTXT5,LTXT6,LTXT7
STEM1.1 = LTXT1
STEM1.2 = LTXT2
STEM1.3 = LTXT3
STEM1.4 = LTXT4
STEM1.5 = LTXT5
STEM1.6 = LTXT6
STEM1.7 = LTXT7
"EXECIO * DISKW OUTPUT (STEM STEM1. "
"EXECIO 0 DISKW OUTPUT (FINIS)"
CALL BPXWDYN "FREE FI(OUTPUT)"
EXIT

First 5 lines are printing correctly but when GAL reads <XT6 the Automan product itself is abending:

AMAN955E AMCMCSCN Abend RC=840C4000 Reason=00000010
AMAN995I in AMCMCS17 PSW=078D6000 9E67BCA4
AMAN R0=00000006 1E61D32E 1E6E955D 1E61D208
AR0=9E043D16 00000000 00000000 00000000
AMAN R4=00025189 1E5DCDE8 000250D4 1E5DCDC8
AR4=01020038 01020038 01020038 00000000
AMAN R8=1E5DCDE8 1E5C21BC 1E6E955D 1E66617E
AR8=01020038 00000000 00000000 01020038
AMAN RC=1E67BBD8 1E61D298 00000005 1E6E9571
ARC=00000000 00000000 00000000 00000000
AMAN801I Monitor Recovering from Abend
AMAN955E AMCMCSCN Abend RC=840C4000 Reason=00000010
AMAN995I in AMCMCSCN PSW=078C6000 9E66E652
AMAN R0=00000000 00004090 00000003 00000000
AR0=9E043D16 01020038 00000000 00000000
AMAN R4=00004189 00000007 000040D4 1E5DCDC8
AR4=01020038 01020038 01020038 00000000
AMAN R8=1E5DCDF4 1E5C21BC 1E5C21BC 00004090
AR8=01020038 00000000 00000000 01020038
AMAN RC=9E66E000 1E61D070 0000000C 00000004
ARC=00000000 00000000 00000000 00000000
AMAN801I Monitor Recovering from Abend
AMAN955E AMCMCSCN Abend RC=840C4000 Reason=00000010
------------------------------------
----------------------------------
----------------------------------- many lines like this
AMAN801I Monitor Recovering from Abend
AMAN802S Too many monitor abends. Shutdown ordered
AMAN899I Monitor shutdown in progress
IEA631I OPERATOR SYS1AUT0 NOW INACTIVE, SYSTEM=ADCD

Any help?

Is there a better logic that i can use in this case instead of hardcoding the number of lines?

What's wrong with only the line 6? i even increased the Length to 150 but still same error.

I hope you will be able to recreate this problem in your Lab.
0
automan

Avatar / Picture

Moderator
Registered:
Posts: 136
Reply with quote  #55 
There are only 5 lines in the message ICH408I. I will have someone find out why it abends when trying to access a line that is not there.

You can pick up the actual number of lines with LET x = $$MSGNOL

Then you can do something like this

LET x = $$MSGNOL /* number of lines */
REXX SECOPEN /* open the dataset */
FOR i = 1 TO x /* loop for each line */
LET xt = $$MSGTXT(i) /*pick up line */
REXX SECFAILS(xt) /* use REXX to open dataset */
END
REXX SECCLOSE /*close and unallocate */

0
automan

Avatar / Picture

Moderator
Registered:
Posts: 136
Reply with quote  #56 
I have sent you a replacement module to put in your load library to fix the dump that you got when you tried to extract a line that was out of bounds.
0
Zamin

Avatar / Picture

Member
Registered:
Posts: 67
Reply with quote  #57 
You should seriously think about adding ALLOC, WRITE and DEALLOC instructions to GAL. There is probably no reason to add OPEN and CLOSE, they can be implicit.
0
rakesh

Member
Registered:
Posts: 52
Reply with quote  #58 
i agree with Zamin. It will be efficient if GAL have the file handling capabilities. In this case, call REXX every time and opening file writing one line and closing, and repeating this process is not efficient i hope.

Another suggestion is to have kind of stem/array kind of variables. That way we can pass multiple lines of data to REXX or other GAL functions efficiently.

And i copied the module you gave and recycled AUTOMAN task. But i am still getting the same abend when i try to read message that out of bound. Line 6.

ICH408I USER(SHRDV10 ) GROUP(USERGRP ) NAME(TRAINING USERID )
ADCD.Z110.PARMLIB CL(DATASET ) VOL(ZARES1)
INSUFFICIENT ACCESS AUTHORITY
FROM ADCD.* (G)
ACCESS INTENT(UPDATE ) ACCESS ALLOWED(READ )
IEC150I 913-38,IFG0194E,SHRDV10,DBSPROC,ISP00033,0A81,ZARES1,ADCD.Z110.PARMLIB


MSG=ICH408I
VAR <XT1 LEN 80
VAR <XT2 LEN 80
VAR <XT3 LEN 80
VAR <XT4 LEN 80
VAR <XT5 LEN 80
VAR <XT6 LEN 80
LET <XT1 = $$MSGTXT(1) /* GET LINE OF MESSAGE */
LET <XT2 = $$MSGTXT(2) /* GET LINE OF MESSAGE */
LET <XT3 = $$MSGTXT(3) /* GET LINE OF MESSAGE */
LET <XT4 = $$MSGTXT(4) /* GET LINE OF MESSAGE */
LET <XT5 = $$MSGTXT(5) /* GET LINE OF MESSAGE */
LET <XT6 = $$MSGTXT(6) /* GET LINE OF MESSAGE */
REXX SECFAILS (<XT1,<XT2,<XT3,<XT4,<XT5,<XT6)
*
-------

I will use your code once we sure that your update to the module fix the abend.

Thank you
0
automan

Avatar / Picture

Moderator
Registered:
Posts: 136
Reply with quote  #59 
rakesh, sorry sent you the wrong module. A new one has been sent to you.
0
automan

Avatar / Picture

Moderator
Registered:
Posts: 136
Reply with quote  #60 
I have started a new thread for file output, to collect ideas about what and how to do it.
0
Previous Topic | Next Topic
Print
Reply

Quick Navigation:


Create your own forum with Website Toolbox!