Skip to Main Content
IBM Z Software


This portal is to open public enhancement requests against IBM Z Software products. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

Status Future consideration
Created by Guest
Created on May 4, 2025

zosload or zoslink function in ctypes module on z/OS

The standard Python ctypes (and/or CFFI) module provides a CDLL function to load an operating system DLL, whose entry points can then be invoked by passing a list of arguments to the nominated entry point:

mylib = ctypes.CDLL("library_name")
rc = mylib.ep_name(arg, arg, ...)

This works on z/OS, which is wonderful, but unfortunately, the vast majority of z/OS-specific functionality that one might wish to invoke from Python is not packaged in a 64-bit DLL.  More frequently, this functionality is available as a load module or program object in a PDS/PDSE.  In addition, 31-bit functionality predominates, although more recently added "system services" do tend to offer a 64-bit alternate (sometimes only) entry point.

Accordingly, I think it would be good to have a z/OS-specific method of fetching a load module/program object, semantically similar to CDLL.  Perhaps the user must specify at this point whether they intend to call a 31-bit or 64-bit entry point (a PDS/PDSE library may contain a mixture of both), as it is complex to work out the AMODE of a load module after it is loaded.  For simplicity, it is probably reasonable to assume the load module implements OS linkage convention - that is, the argument list is passed as a list of pointers to 31-bit storage (since ctypes.create_string_buffer always allocates from 31-bit storage).  If the call to the nominated entry point is made in AMODE 64, each parameter pointer in the parameter list is an 8-byte value.  If calling in AMODE 31, each parameter pointer is a 4-byte value with the high-order bit set on the last parameter address.

Idea priority Medium