DFSORT: FILTER by STCK format

2010-08-26 Thread Gil, Victor x28091
Good morning IBM-MAIN,

Can DFSORT filter [not just DISPLAY] a QSAM input by a fixed field in the STCK 
format?

Say, the file records have 8-byte STCK time in columns 11-18, how should I code 
the control statements to only INCLUDE records which are older than 
"current-time less 30 minutes"?

As always, your input is greatly appreciated,
-Victor- 
This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Best practice for 24-bit storage in assembler called from C/C++

2010-02-23 Thread Gil, Victor x28091
Charles,

Have you looked at the ALL31(OFF) LE option?

I don't know how it works for C/C++ but for Cobol this option instructs
LE to allocate the COBOL EXTERNAL data in storage below the line.  Which
means if a main program defines an EXTERNAL variable it will be below
the line AND accessible by the name from any subroutine that also
defines it as EXTERNAL. 

This is a rather old trick and so the most current LE may have other
options to suit your needs.

HTH,
-Victor-  
This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Batch connection to CSKL (was: Trigger CICS transaction from Batch Job)

2009-08-14 Thread Gil, Victor x28091
Thanks, Jantje.

I vaguely remember coding a simple child server circa 1997 and having an
issue with the need to start it on a "terminal" to enable password
maintenance via EXEC CICS SIGNON.

But I've never touched the "batch" part. Will take a look.

Thanks again,
-Victor- 

===
Date:Thu, 13 Aug 2009 07:16:24 -0500
From:Jan MOEYERSONS 
Subject: Re: Batch connection to CSKL (was: Trigger CICS transaction
from Batch Job)



You can find the fine manual that describes the CICS side of such at
z/OS 
Communications Server IP CICS Sockets Guide ( 
http://www.elink.ibmlink.ibm.com/publications/servlet/pbi.wss?
CTY=US&FNC=SRX&PBL=SC31-8807-05 ). The batch side of things is described

in z/OS Communications Server IP Sockets Application Programming
Interface 
Guide and Reference ( 
http://www.elink.ibmlink.ibm.com/publications/servlet/pbi.wss?
CTY=US&FNC=SRX&PBL=SC31-8788-07 ).

I did code a child server, but I am afraid I cannot give you that code,
because 
it was developed for a specific customer who paid for it and who
actually owns 
that code. But the documentation is fairly good and there are samples.

The code for the client was for Windows.

The point, however, is that CICS comes with infrastructure (the CSKL 
transaction) that makes managing a listener in CICS quite simple and
effective. 

All you need to do is to code the child server transaction in your
programming 
language of choice. The book gives you guidelines on how to structure
the 
program for this transaction. And you do not have to worry about how to 
listen for an incoming connection (because that is the difficult part
that CICS 
has already done for you...). Your transaction is started by CSKL and
receives 
the socket number that represents the connection. All you need to do is
to 
TAKESOCKET and start receiving (and sending) data over it.

For the batch program, you just do simple sockets programming, again in
the 
programming language of your choice. 

The connection is set up by opening a socket to the port where the CSKL
is 
listening, send the trancode plus some security-related information (if
you 
need it). CICS is listening for incoming connections, spawns the
transaction, 
corresponding to the trancode you ask for and GIVESOCKET the socket to
it.

Then your batch program and your CICS transaction engage in a TCP 
conversation and can pass data back and forth among them without 
restriction.

Do read the book; it is all in there.

If you need more information, please ask me specific, detailed questions
off-
list.

Cheers,

Jantje.
This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Batch connection to CSKL (was: Trigger CICS transaction from Batch Job)

2009-08-12 Thread Gil, Victor x28091
Jantje,

I am intrigued. Can you elaborate a bit on this idea?
[Doc pointers, code samples, etc.]

TIA,
-Victor- 

==
Date:Mon, 10 Aug 2009 05:40:50 -0500
From:Jan MOEYERSONS 
Subject: Re: Trigger CICS transaction from Batch Job



But instead of connecting to a 3270 terminal, the connection should be
made 
to the CICS listener CSKL. Works like a charm. With security if you need
it and 
no sweat exchanging information back and forth between the batch program

and the CICS transaction.

Cheers,
Jantje.
This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Mainframe Assembler Coding Contest

2007-12-14 Thread Gil, Victor x28091
Tom,

I liked your solution. Truly ingenious!
It might get just a bit shorter by using ICM instead of the IC+SLL:   

 ICM   R5,B'1000',INBYTE

-Victor-  

Date:Thu, 13 Dec 2007 17:13:09 -0800
From:Tom Simons <[EMAIL PROTECTED]>
Subject: Re: Mainframe Assembler Coding Contest

Here's 8 instructions to translate 8 bits to 8 chars of 1's or 0's:

 LAR3,8
 ICR5,INBYTE
 SLL   R5,24
LOOP SLL   R4,3
 SLDL  R4,1
 BCT   R3,LOOP
 STR4,OUTCHAR
 UNPK  OUTCHAR(9),OUTCHAR(5)

OUTCHAR  DSCL8
 DSX
INBYTE   DCB'10101011'

This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: SUBSYS and VSAM

2006-05-18 Thread Gil, Victor x28091
Jim,

Thanks for the response.
I guess BLSR is not a good comparison since it has its own way of
intercepting the I/O [not by replacing ACBINRTN], so the question remains.
Hopefully, I'll test this out in a week or so.

Meanwhile, I am confirming that DYNALLOC during SSI Open does indeed hang on
SYSZTIOT, so I am deferring it up to the first I/O request. Luckily, there
are no collisions between the SSI Close and dynamic De-Allocation.

-Victor-  

-Original Message-
Date:Wed, 17 May 2006 02:52:14 -0400
From:Jim Mulder <[EMAIL PROTECTED]>
Subject: Re: SUBSYS and VSAM

IBM Mainframe Discussion List  wrote on 05/04/2006 
03:32:36 PM:

> According to an old doc [SSI in MVS/SP], when a user opens a DCB against 
a 
> SUBSYS dd, SAM-SI [part of the SAM access] converts it into an ACB 
[which 
> is presented to the SSI routines] and then maps the response back to the 

> original DCB.
> 
> Anybody knows what happens if the user opens a VSAM ACB against a SUBSYS 
dd 
> [like when using BLSR]?

  The BLSR SSI Open routine is presented with a key 5 copy of the ACB 
being
opened.  I don't know what gets mapped back into the original ACB, because 

BLSR doesn't modify the key 5 copy, and doesn't depend on anything getting
getting mapped back.  My knowledge of SUBSYS processing is limited to 
what BLSR does.
 
Jim Mulder   z/OS System Test   IBM Corp.  Poughkeepsie,  NY

_
This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


SSI experience

2006-05-03 Thread Gil, Victor x28091
First of all, I'd like to thank everybody who helped me with the subsystem
documentation and debugging, especially, Sam Knutson, Tom Schmidt and
Binyamin Dissen - your input was much appreciated.

Let me also share some of the experience [for the archive]:

a) Contrary to the doc "Using the SSI", do NOT place your function routines
in either LPA or the LNKLST [while debugging, of course]. The latter
requires LOAD-TO-GLOBAL option on the SSVTI entry which causes the routine
to be stuck in CSA. In either case this becomes a PITA if you need to
refresh the code after a recompile [there are programmatic ways of
refreshing a function but they require extra coding]. Instead - code a small
stub to load your function, define it in SSVTI so that your actual function
routine can happily live in any APF-authorized library NOT associated with
the LNKLST.

b) If during CLOSE you'd like to reuse the working storage acquired by OPEN,
you might be able to keep its pointer in SSDASSCM 

c) Personally, I like the idea of a single working storage shared among the
various entry points [helps debugging], so I am also preserving its pointer
in a task-level NAME/TOKEN pair, where the name suffix is made of such ACB
fields as ACBUJFCB and/or ACBDEB. Whether the entry points are passed the
"true" user ACB or the protected copy, these fields are going to remain the
same. This way the GetPut routine can easily construct a proper token name
and retrieve its value. Comes handy, because the GetPut routine does need to
access the DCB built during Open.

d) However, the token retriever [IEANTRT] needs 52 bytes: 4 arguments with
the total length of 36 bytes plus 4 addresses. Don't you hate to
OBTAIN/RELEASE 52 bytes upon each and every entry just for the purpose of
locating working storage?  Me too.  Luckily, there is a tricky workaround
[left as an exercise and also to prevent flames]

-Victor-   

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


SSI questions

2006-04-04 Thread Gil, Victor x28091
I am probably missing something obvious -

When setting up a subsystem, how do I tell the system to call a custom
function to Allocate, Open, Get, Close or Deallocate a dataset?

Doesn't the association come from a table built using the IEFSSVTI macro?
But the list of codes "SSI Function Codes Your Subsystem Can Support" has no
such functions. I can use "my own" codes in the 236-255 range, but how would
this tell the system to call a function, say, for Open?

Also - looking at the SUBSYS parameter in the JCL reference, I see the
following statement

Do not use the SUBSYS parameter for an SMS-managed data set (one
with an assigned storage class). 
  
I am almost sure that the datasets I'd like to access have an assigned
storage class - does this truly mean they can't be accessed through a
subsystem?

Thanks in advance!
-Victor-   

_
This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


How to "marry" subsystem and dynamic allocation

2006-03-23 Thread Gil, Victor x28091
Good afternoon, IBM-MAIN

We'd like to be able to prevent certain "confidential" fields in production
files from being revealed to "unauthorized" users while still allowing
access to the rest of the record. From the users prospective these files are
read-only and are accessed through TSO, batch or CICS for testing or
comparison purposes.

The total volume of such files is huge and changes daily, so cloning them
and altering the sensitive fields is not an option. The only other option we
can think of is to develop an in-house method of intercepting and altering
records while they are being read, transparently to the application.

Here's what we've researched so far: 

- In CICS this should be easily achievable through the file control exit.
The exit would look up the dataset in a table and if found, apply a
correspondent "rule".
- In batch we would implement a subsystem that would intercept each
[sequential] I/O and alter the record using the very same rules.

What do we do in TSO? Generally, how do we intercept records of a
dynamically allocated file?

There is a system-wide dynalloc input validation exit, IEFDB401, and it
might be able to add "SUBSYS=..." to the DYNALLOC requests, but this would
severe overtax all other dynamic allocations in the shop.

Appreciate all and any ideas, as crazy as they might sound
-Victor- 

_
This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: Fw: COBOL callable services?

2005-08-31 Thread Gil, Victor x28091
B) Not necessarily. Working storage of a COBOL program complied with
DATA(31) may define data residing below 16M if ALL31 is set to OFF
[IBM-supplied default]. This is achieved using the EXTERNAL attribute as in
the following code snippet

 01  BELOW   EXTERNAL.
 05  DELAY-AMT   PIC S9(9) COMP.  
 
 CALL ILBOWAT0 USING DELAY-AMT  

-Original Message-
Date:Tue, 30 Aug 2005 17:02:50 -0500
From:Bill Klein <[EMAIL PROTECTED]>
Subject: Fw: Fw: COBOL callable services?

Just remember that when calling ILBOWAT0, you 

A) want to do a dynamic CALL
B) need to use DATA(24)

I know that some shops have actually created their own "interface" module
(to be called by DATA(31) programs) to copy the time below the line and then
to call ILBOWAT0.

P.S.  ILBOABN0 *has* been changed to accept data above the line - as I
recall.  Certainly ILBOSTP0 can be called from above the line.

<[EMAIL PROTECTED]> wrote in message
news:<[EMAIL PROTECTED]>...
> No PL/I however I have written and assembler STIMER routine.  I'll stick
> with ILBOWATO for now.
> 
> Thanks,
>Craig

_
This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


ISREDIT macro and ampersands

2005-08-03 Thread Gil, Victor x28091
When a source line happens to contain an ampersand it can still be read by

ISREDIT (THELINE) = LINE &ROW

However, an attempt to rewrite it back [even unchanged!]

ISREDIT LINE &ROW = &THELINE

fails, and so does an attempt to examine its contents with the &SUBSTR
function.
   
I've looked through the manuals, tried SCAN OFF/ON but ended up with
replacing the ampersands BEFORE reading the line 

ISREDIT LABEL &ROW = .CURR
ISREDIT CHANGE X'50' X'EF' .CURR .CURR ALL

and restoring them back later   

ISREDIT CHANGE X'EF' X'50' .CURR .CURR ALL

This works [except for the rare case when X'EF' is actually part of the
original source code and thus gets mistakenly replaced with the ampersand]
but just doesn't feel right. I guess it would if the restore was done
through UNDO but it's unavailable to ISREDIT.

Am I missing something stupid or is this a known limitation?

Thanks!
-Victor- 

_
This message and any attachments are intended only for the use of the addressee 
and
may contain information that is privileged and confidential. If the reader of 
the 
message is not the intended recipient or an authorized representative of the
intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication in
error, please notify us immediately by e-mail and delete the message and any
attachments from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html