<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://m204wiki.rocketsoftware.com/index.php?action=history&amp;feed=atom&amp;title=Cross-memory_facilities_CRAM_and_M204XSVC</id>
	<title>Cross-memory facilities CRAM and M204XSVC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://m204wiki.rocketsoftware.com/index.php?action=history&amp;feed=atom&amp;title=Cross-memory_facilities_CRAM_and_M204XSVC"/>
	<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Cross-memory_facilities_CRAM_and_M204XSVC&amp;action=history"/>
	<updated>2026-04-04T00:07:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Cross-memory_facilities_CRAM_and_M204XSVC&amp;diff=117305&amp;oldid=prev</id>
		<title>DCameron: /* Two CRAM types */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Cross-memory_facilities_CRAM_and_M204XSVC&amp;diff=117305&amp;oldid=prev"/>
		<updated>2019-02-26T15:02:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Two CRAM types&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:02, 26 February 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Both types of CRAM can coexist: a Model&amp;amp;nbsp;204 site might use a combination of both types for testing and production purposes. However, a given address space can use only one method. All channels within the Online address space can use CRAM-XDM or CRAM-SVC, but not both.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Both types of CRAM can coexist: a Model&amp;amp;nbsp;204 site might use a combination of both types for testing and production purposes. However, a given address space can use only one method. All channels within the Online address space can use CRAM-XDM or CRAM-SVC, but not both.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Despite this compatibility, CRAM-XDM is now the recommended option, and no CRAM- SVC installation job or instructions are offered after Model&amp;amp;nbsp;204 version 7.4.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Despite this compatibility, CRAM-XDM is now the recommended option, and no CRAM-SVC installation job or instructions are offered after Model&amp;amp;nbsp;204 version 7.4.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If both CRAM types are installed at a site, and CRAM threads are defined (the &amp;lt;var&amp;gt;IODEV&amp;lt;/var&amp;gt; values mentioned in the previous section), the CRAM type you invoke is determined by the &amp;lt;var&amp;gt;[[XMEMOPT parameter|XMEMOPT]]&amp;lt;/var&amp;gt; parameter value you specify: the &amp;lt;var&amp;gt;XMEMOPT&amp;lt;/var&amp;gt; X&amp;#039;80&amp;#039; bit calls CRAM-XDM; absent the X&amp;#039;80&amp;#039; bit, any other non-zero &amp;lt;var&amp;gt;XMEMOPT&amp;lt;/var&amp;gt; value calls CRAM-SVC.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If both CRAM types are installed at a site, and CRAM threads are defined (the &amp;lt;var&amp;gt;IODEV&amp;lt;/var&amp;gt; values mentioned in the previous section), the CRAM type you invoke is determined by the &amp;lt;var&amp;gt;[[XMEMOPT parameter|XMEMOPT]]&amp;lt;/var&amp;gt; parameter value you specify: the &amp;lt;var&amp;gt;XMEMOPT&amp;lt;/var&amp;gt; X&amp;#039;80&amp;#039; bit calls CRAM-XDM; absent the X&amp;#039;80&amp;#039; bit, any other non-zero &amp;lt;var&amp;gt;XMEMOPT&amp;lt;/var&amp;gt; value calls CRAM-SVC.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>DCameron</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Cross-memory_facilities_CRAM_and_M204XSVC&amp;diff=114835&amp;oldid=prev</id>
		<title>JAL: add category</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Cross-memory_facilities_CRAM_and_M204XSVC&amp;diff=114835&amp;oldid=prev"/>
		<updated>2018-04-20T19:25:24Z</updated>

		<summary type="html">&lt;p&gt;add category&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:25, 20 April 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l257&quot;&gt;Line 257:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 257:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At a site with such an M204XSVC SVC, if a non-SVC version of the M204XSVC module is linked into the Online (and the Online is APF authorized), that non-SVC version is used to initialize the XDM environment. Otherwise, if the INCLUDEs for M204XSVC are removed from the Online and IFAM link jobs, the M204XSVC SVC is called (if &amp;lt;var&amp;gt;[[XMEMSVC parameter|XMEMSVC]]&amp;lt;/var&amp;gt; is set). Once established, M204XSVC invokes routines by using PC instructions, and its only actual SVC call might be at initialization.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At a site with such an M204XSVC SVC, if a non-SVC version of the M204XSVC module is linked into the Online (and the Online is APF authorized), that non-SVC version is used to initialize the XDM environment. Otherwise, if the INCLUDEs for M204XSVC are removed from the Online and IFAM link jobs, the M204XSVC SVC is called (if &amp;lt;var&amp;gt;[[XMEMSVC parameter|XMEMSVC]]&amp;lt;/var&amp;gt; is set). Once established, M204XSVC invokes routines by using PC instructions, and its only actual SVC call might be at initialization.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Model 204 operational issues]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JAL</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Cross-memory_facilities_CRAM_and_M204XSVC&amp;diff=103073&amp;oldid=prev</id>
		<title>JAL: Created page with &quot;CRAM and M204XSVC are the main facilities used by Model&amp;nbsp;204 to access z/OS cross-memory services. This page presents an overview of these facilities. __TOC__  ==CRAM== Th...&quot;</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Cross-memory_facilities_CRAM_and_M204XSVC&amp;diff=103073&amp;oldid=prev"/>
		<updated>2017-05-23T18:16:44Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;CRAM and M204XSVC are the main facilities used by Model 204 to access z/OS cross-memory services. This page presents an overview of these facilities. __TOC__  ==CRAM== Th...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;CRAM and M204XSVC are the main facilities used by Model&amp;amp;nbsp;204 to access z/OS cross-memory services. This page presents an overview of these facilities.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==CRAM==&lt;br /&gt;
The Cross-Region Access Method (CRAM) allows a program running in one &lt;br /&gt;
mainframe region to communicate with a version of Model&amp;amp;nbsp;204 running   &lt;br /&gt;
in a different region on the same CPU. &lt;br /&gt;
CRAM is used by:  &lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;IODEV=11 (CICS and TSO full screen threads) &lt;br /&gt;
&amp;lt;li&amp;gt;IODEV=23 (IFAM2/IFSTRT threads) &lt;br /&gt;
&amp;lt;li&amp;gt;IODEV=29 (IFAM2/IFDIAL, line-at-a-time threads) &lt;br /&gt;
&amp;lt;/ul&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If any CRAM-dependent connections are defined to an Online (any of the above &amp;lt;var&amp;gt;[[IODEV parameter|IODEV]]&amp;lt;/var&amp;gt; specifications), the Online must be able to load the CRAM [[#The XDM load modules|IGCLM244 module]]: CRAMLIB (the default CRAM load library as of Model&amp;amp;nbsp;204 version 7.5) must be part of the Online job&amp;#039;s STEPLIB concatenation, or IGCLM244 must be moved into the Online job&amp;#039;s designated STEPLIB library.&lt;br /&gt;
&lt;br /&gt;
The overview of CRAM on this page is a supplement to the considerable additional CRAM information on these pages:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Defining the user environment (CCAIN)#CRAM (IODEV=11, 23, 29)|Defining the user environment (CCAIN)]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[HLI: Job requirements#IFAM2 jobs|HLI: Job requirements]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[Model 204 installation on IBM z/OS#CRAM|Model 204 installation on IBM z/OS]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Two CRAM types===&lt;br /&gt;
For many years, CRAM functionality relied on operating-system SVC calls. Now referred to as CRAM-SVC, this approach is deprecated as of version 7.5 of Model&amp;amp;nbsp;204. The more recent CRAM alternative, CRAM-XDM, uses z/OS cross memory services to move pages from one address space to another in one instruction, providing much better performance than CRAM-SVC.&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; For a detailed description of the CRAM-XDM performance benefits, see [[Defining the user environment (CCAIN)#CRAM-XDM performance versus CRAM-SVC|CRAM-XDM performance versus CRAM-SVC]]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both types of CRAM can coexist: a Model&amp;amp;nbsp;204 site might use a combination of both types for testing and production purposes. However, a given address space can use only one method. All channels within the Online address space can use CRAM-XDM or CRAM-SVC, but not both.&lt;br /&gt;
Despite this compatibility, CRAM-XDM is now the recommended option, and no CRAM- SVC installation job or instructions are offered after Model&amp;amp;nbsp;204 version 7.4. &lt;br /&gt;
&lt;br /&gt;
If both CRAM types are installed at a site, and CRAM threads are defined (the &amp;lt;var&amp;gt;IODEV&amp;lt;/var&amp;gt; values mentioned in the previous section), the CRAM type you invoke is determined by the &amp;lt;var&amp;gt;[[XMEMOPT parameter|XMEMOPT]]&amp;lt;/var&amp;gt; parameter value you specify: the &amp;lt;var&amp;gt;XMEMOPT&amp;lt;/var&amp;gt; X&amp;#039;80&amp;#039; bit calls CRAM-XDM; absent the X&amp;#039;80&amp;#039; bit, any other non-zero &amp;lt;var&amp;gt;XMEMOPT&amp;lt;/var&amp;gt; value calls CRAM-SVC.&lt;br /&gt;
&lt;br /&gt;
===CRAM-XDM===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
CRAM-XDM uses z/OS cross memory services to move pages from one address space to another in one instruction. It initializes a single cross-memory environment, M204XDM, that is shared among all Model&amp;amp;nbsp;204 Onlines. The M204XDM job is the master XDM job; it must be submitted &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; the Online jobs that might use that XDM. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
XDM (cross-region data mover) is an address space that executes the M204XDM module. It runs separate from the Online module, and it runs APF-authorized in order to run [[Defining the user environment (CCAIN)#The importance of non-swappability|non-swappable and  non-cancellable]]. It calls M204XSVC, described further [[#The XDM load modules|below]], to initialize the cross-memory environment for the Online. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
XDM always loads the M204XCSA, M204XCRM, and M204XSVC modules from its JOBLIB or STEPLIB. These modules are described further in the next section.&lt;br /&gt;
XDM does &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; load the IGCLM244 module; it gets the CRAM z/OS subsystem name from the [[Defining the user environment (CCAIN)#Activating XDM|M204XDM job card]] as a PARM parameter. &lt;br /&gt;
 &lt;br /&gt;
For convenience, XDM initially puts messages like the following into the JES log:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;IEF403I QATCM77P - STARTED - TIME=09.20.14    &lt;br /&gt;
M204XSVC 7.7.0D  03/02/16 LOADED AT AF302478  &lt;br /&gt;
M204XCRM 7.7.0D  04/06/16 LOADED AT AF302000  &lt;br /&gt;
M204XCSA 7.7.0D  04/06/16 LOADED AT 2BE16758 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
The XDM address space is largely a repository for executable shared code. Once active, XDM does nothing unless a &amp;lt;var&amp;gt;MONITOR&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;EOJ&amp;lt;/var&amp;gt; command is issued. Except for these two commands, XDM cannot abend, because it does no work.&lt;br /&gt;
All activity is run in the XDM address space on behalf of the calling address space, with CPU being charged to the TCB of the caller (client or server).&lt;br /&gt;
&lt;br /&gt;
XDM allows more than one Online to use the same subsystem name.&lt;br /&gt;
It keeps a table of all Onlines that are connected, along with their channel names. &lt;br /&gt;
&lt;br /&gt;
For more information about bringing up and working with XDM, see [[Defining the user environment (CCAIN)#Managing CRAM-XDM|Managing CRAM-XDM]].&lt;br /&gt;
&lt;br /&gt;
====The XDM load modules====&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;M204XSVC is used to establish the cross-memory control block for calls within the address space. This control block contains the PC call tables. M204XSVC is described further in [[#M204XSVC|the M204XSVC section]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;M204XCSA is loaded and moved into CSA common storage. It handles opens and closes from the calling address space. It also handles callers that are swappable. The CSA is a part of the common area in z/OS that typically contains data that is referenced by multiple address spaces, thus enabling communication among them. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;M204XCRM handles cross-region communication between non-swappable callers. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;IGCLM244 is linked into the Online and CRAM load libraries and loaded &amp;lt;i&amp;gt;by the caller&amp;lt;/i&amp;gt; (client or server). All CRAM calls enter through this module. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The location of the CRAM control blocks is identified by its z/OS secondary subsystem name (SSN). Initially provided in the [http://m204wiki.rocketsoftware.com/index.php/Model_204_CRAM_link_job_stream_for_IBM_z/OS CRAM installation JCL] (the value of &amp;lt;code&amp;gt;CRMSSN&amp;lt;/code&amp;gt;), the SSN value is found in the &amp;lt;code&amp;gt;CRAMGEN&amp;lt;/code&amp;gt; macro at the end of the IGCLM244 module. &lt;br /&gt;
Assembled as a constant, the SSN is then used, for example, by a BATCH2 job to ensure that it connects to the desired M204XDM job, and from there, that it connects to the desired Online job. Each of those jobs has also loaded a copy of IGCLM244 into its address space. &lt;br /&gt;
The Model&amp;amp;nbsp;204 system parameter &amp;lt;var&amp;gt;[[XDMSSN parameter|XDMSSN]]&amp;lt;/var&amp;gt; lets you override the SSN that was associated with CRAM-XDM at installation. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once connected, IGCLM244 resolves writes and reads into PCs (program calls) into M204XCRM (or M204XCSA, depending on swappability), and communication occurs.&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CRAM-SVC===&lt;br /&gt;
CRAM-SVC is CRAM functionality that relies on SVC calls. The information about this now-deprecated functionality is provided for historical purposes and for those sites that still have CRAM-SVC installed. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
CRAM-SVC moves data by copying it first to common storage, posting the other side, and then letting the other side copy it. This method is less efficient than CRAM-XDM, which uses z/OS cross memory services. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information about working with CRAM-SVC, see [[Defining the user environment (CCAIN)#Using CRAM on a z/OS operating system|Using CRAM on a z/OS operating system]].&lt;br /&gt;
&lt;br /&gt;
====Component modules====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
These are the CRAM-SVC component modules: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The CR00MXA object module is the CRAM SVC for z/OS, and all CRAM SVC calls actually invoke CR00MXA (linked as load module IGC00&amp;lt;i&amp;gt;nnx&amp;lt;/i&amp;gt;, where &amp;lt;i&amp;gt;nnx&amp;lt;/i&amp;gt; is the the assigned SVC number). This module contains CRAM read/write logic, flow of control, and open/close code. It also coordinates inter-region waiting and data transfer. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following CRAM-SVC object modules are the callers. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;CRLMMXA (z/OS); linked as load module IGC01&amp;lt;i&amp;gt;nnx&amp;lt;/i&amp;gt; and as duplicate load module IGCLM244. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
IGCLM244 remains in a load library as the resident load module for CRAM, while IGC01&amp;lt;i&amp;gt;nnx&amp;lt;/i&amp;gt; is added to the proper system library for inclusion into PLPA storage and use by the IGC00&amp;lt;i&amp;gt;nnx&amp;lt;/i&amp;gt; module.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
IGCLM244 is also used to locate the CRAM SVC. The SVC number is assembled as a constant and found in the &amp;lt;code&amp;gt;CRAMGEN&amp;lt;/code&amp;gt; macro at the end of the IGCLM244 module. If CRAM is installed without an SVC, the SVC constant in the IGCLM244 assembly is set to zero. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
CRAM-XDM also uses CRLMMXA/IGCLM244, as described above in [[#The XDM load modules|The XDM load modules]]. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;CRLMXPCC (CMS). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Link Pack Area storage====&lt;br /&gt;
Type 4 SVC load modules such as the CRAM-SVC modules must reside in the z/OS Link Pack Area (LPA). The LPA is divided into three sections:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Pageable Link Pack Area (PLPA) &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Modified Link Pack Area (MLPA) &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fixed Link Pack Area (FLPA) &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Pageable Link Pack Area=====&lt;br /&gt;
The PLPA is an area of virtual storage that contains a copy&lt;br /&gt;
of every module from the LPALST, and a directory listing each module. During&lt;br /&gt;
an IPL with the Create Link Pack Area (&amp;lt;code&amp;gt;CLPA&amp;lt;/code&amp;gt;) option, the control program&lt;br /&gt;
copies all the modules from LPALST into a special paging data set. Subsequent&lt;br /&gt;
IPLs without the CLPA option do not reinitialize this special paging data set,&lt;br /&gt;
thus reducing the time required for IPL.&lt;br /&gt;
&lt;br /&gt;
Additional considerations that apply to performance are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Locating a Type 4 SVC load module&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Type 4 SVC load modules are most frequently located in the PLPA. A&lt;br /&gt;
module in the PLPA can be located by a hashed search of the PLPA directory. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a PLPA module is found with a hashed search, a Contents Directory&lt;br /&gt;
Entry (CDE) is created in fixed storage. The CDE contains the&lt;br /&gt;
module name, virtual storage address, link editor attributes, and use&lt;br /&gt;
count. Page faulting is likely to occur in systems having high paging loads. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Minimizing page faults&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A program fetch operation that brings in an entire module may be more&lt;br /&gt;
efficient than allowing page fault processing routines to read the&lt;br /&gt;
requested module from the PLPA paging data set into real storage. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Page faults occur when a PLPA module is referenced while it is not in&lt;br /&gt;
real storage. Two page faults can be generated if a module crosses a page boundary. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Placing all the modules for a specific Type 4 SVC on the same page of&lt;br /&gt;
virtual storage can reduce page faulting. In this case, a reference to&lt;br /&gt;
one module automatically brings other modules into real storage. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;System paging rates can be reduced by controlling the allocation of virtual&lt;br /&gt;
storage in the PLPA through the SYS1.PARMLIB member&lt;br /&gt;
IEAPAK00. IEAPAK00 lists one or more groups of modules. Each group&lt;br /&gt;
is started on a virtual storage page boundary with the modules loaded&lt;br /&gt;
contiguously in the listed order. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Using the z/OS Subsystem facility or placing the IGCLM244 module in&lt;br /&gt;
the Fixed Link Pack Area avoids page faults that can occur when the&lt;br /&gt;
PLPA page is needed by another module.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a PLPA page is needed by another module, the old page is not&lt;br /&gt;
saved. If the old page is needed again, it is reloaded. In instances where&lt;br /&gt;
the Common Service Area (CSA) address is stored in IGCLM244 and&lt;br /&gt;
IGCLM244 is stored in the PLPA, the address is lost if that page of the&lt;br /&gt;
PLPA is taken for another purpose. Using the z/OS Subsystem facility,&lt;br /&gt;
where the CSA address is kept with the Subsystem entry, avoids this&lt;br /&gt;
problem. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Modified Link Pack Area=====&lt;br /&gt;
The MLPA is an area of virtual storage that contains copies&lt;br /&gt;
of LPA modules for testing without reference to the PLPA. A module in the&lt;br /&gt;
MLPA temporarily replaces the version of the module contained in the PLPA.&lt;br /&gt;
&lt;br /&gt;
The MLPA is constructed on a page boundary at every IPL, with or without the&lt;br /&gt;
CLPA option. Modules placed in the MLPA for the duration of a current IPL are&lt;br /&gt;
listed in the SYS1.PARMLIB member IEALPA&amp;lt;i&amp;gt;nnn&amp;lt;/i&amp;gt;, where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;nnn&amp;lt;/var&amp;gt; corresponds to the specified &amp;lt;code&amp;gt;MLPA=&amp;lt;i&amp;gt;nnn&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt; parameter. The control program loads each module,&lt;br /&gt;
in the order listed in IEALPA&amp;lt;i&amp;gt;nnn&amp;lt;/i&amp;gt;, from its library into the MLPA and creates a&lt;br /&gt;
CDE. CDEs for MLPA modules are chained after the CDEs created for PLPA.&lt;br /&gt;
&lt;br /&gt;
The following consideration applies:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Page faults can occur when MLPA modules are referenced. Unlike PLPA&lt;br /&gt;
modules, IEAPAK00 cannot be used to minimize page faults. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Fixed Link Pack Area=====&lt;br /&gt;
The FLPA is an area of real storage that contains copies of&lt;br /&gt;
selected modules. During an IPL the control program loads the modules listed&lt;br /&gt;
in the SYS1.PARMLIB member IEAFI&amp;lt;i&amp;gt;nnn&amp;lt;/i&amp;gt;, where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;nnn&amp;lt;/var&amp;gt; corresponds to the specified &amp;lt;code&amp;gt;FIX=&amp;lt;i&amp;gt;nnn&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt; parameter, into the FLPA and creates a CDE. CDEs for FLPA modules are chained after the CDEs created for PLPA and before those created by IEALPA&amp;lt;i&amp;gt;nnn&amp;lt;/i&amp;gt; (MLPA).&lt;br /&gt;
&lt;br /&gt;
The following considerations apply:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Because the FLPA is an area of real storage, page faults do not occur when&lt;br /&gt;
FLPA modules are referenced. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Performance is better when IGCLM244 and the SVC modules are placed in the FLPA, but the benefit from moving IGCLM244 there is negligible, and moving IGCLM244 is no longer recommended. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;IGC00&amp;lt;i&amp;gt;nnx&amp;lt;/i&amp;gt; must be placed in the FLPA, because the &amp;lt;code&amp;gt;XMPOST&amp;lt;/code&amp;gt; routine must be page fixed. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====SVC load module names=====&lt;br /&gt;
When using a Type 4 or Type 3 SVC and linking an SVC into the Link Pack&lt;br /&gt;
Area, the SVC load module name is derived from the SVC number.&lt;br /&gt;
The SVC name conversion is performed automatically by the&lt;br /&gt;
Model&amp;amp;nbsp;204 CRAM and M204XSVC installation jobs by setting parameters in those jobs to the assigned SVC number.&lt;br /&gt;
&lt;br /&gt;
The format for the SVC load module name is:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IGC0&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;Nnnx&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;N&amp;lt;/var&amp;gt; is a number, 0 or 1, that identifies the load module. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;nn&amp;lt;/var&amp;gt; are the first two digits of the site-determined SVC number. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;x&amp;lt;/var&amp;gt; is derived from the last digit of the SVC number, as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Last digit:  0 1 2 3 4 5 6 7 8 9&lt;br /&gt;
&amp;lt;i&amp;gt;x&amp;lt;/i&amp;gt; value:     { A B C D E F G H I &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
SVC number values may be between 200 and 250 (or &amp;lt;code&amp;gt;NOSVC&amp;lt;/code&amp;gt; for an SVC-less installation). Examples of derived names follow: &amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;SVC number&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;th&amp;gt;SVC load module name&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;SVC244&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;IGC0024D&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;SVC240&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;IGC0024{ &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==M204XSVC==&lt;br /&gt;
The M204XSVC (Model&amp;amp;nbsp;204 cross-memory services) object module supports cross-memory connections for an Online. It creates a control block&lt;br /&gt;
that contains addresses of other control blocks and routines needed to execute program calls within the Model&amp;amp;nbsp;204 address space. &lt;br /&gt;
&lt;br /&gt;
===Features supported===&lt;br /&gt;
CRAM-XDM loads M204XSVC into its storage from the CRAMLIB load library to initialize the XDM environment. During Online initialization, M204XSVC sets up a program call environment for its calls for the various Model&amp;amp;nbsp;204 authorized services that it supports in addition to CRAM-XDM, including:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[IOS Branch Entry]] (including [[Performance monitoring and tuning#Offloading Model&amp;amp;nbsp;204 work to zIIP processors|zIIP processing]] and [[Defining the runtime environment (CCAIN)#Disk buffers and Model 204 storage|ATB buffer pool buffers]]) &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[Timer PC]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[UL/DB2]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Included and linked, with or without an SVC===&lt;br /&gt;
M204XSVC is &amp;lt;i&amp;gt;included&amp;lt;/i&amp;gt; (by default, as of Model&amp;amp;nbsp;204 7.5) in the Online, IFAM1, and IFAM4 load modules. M204XSVC is linked by default into CRAMLIB, the CRAM load library. As described in [[#The XDM load_modules|The XDM load modules]] above, M204XSVC works with the M204XSCA,  M204XCRM, and IGCLM244 modules to provide CRAM-XDM. It works without those modules to support the non-CRAM features listed below. &lt;br /&gt;
&lt;br /&gt;
By default as of Model&amp;amp;nbsp;204 7.5, the M204XSVC module is installed without an SVC. It supports the inline execution of cross-memory code (executing one instruction after another without the overhead of branching to the operating system) to improve performance.&lt;br /&gt;
&lt;br /&gt;
The default installation assumes the Online and CRAM-XDM load libraries are APF-authorized. If these libraries are not APF-authorized, a site &amp;lt;i&amp;gt;must&amp;lt;/i&amp;gt; install M204SVC as an SVC if it wants to use any of these features (which are enabled by the &amp;lt;var&amp;gt;XMEMOPT&amp;lt;/var&amp;gt; parameter values in CCAIN):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CRAM-XDM &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;IOS Branch Entry (including zIIP processing and ATB buffer pool buffers) &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Timer PC &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;UL/DB2 &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although a job to install M204XSVC as an SVC is no longer part of Model&amp;amp;nbsp;204 installation after Model&amp;amp;nbsp;204 version 7.4, a 7.5 or higher site might have installed an M204XSVC SVC (by copying the more recent M204XSVC and renaming it as IGC002&amp;lt;i&amp;gt;nnx&amp;lt;/i&amp;gt; with a standard link job, or by using a previous version of the M204XSVC installation job). Such an older M204XSVC SVC is supported in source in Model&amp;amp;nbsp;204 7.7 and higher, and it is supported by maintenance ([[Release notes for Model 204 version 7.6#M204XSVC as an SVC|zap 76Z043]]) in version 7.6. &lt;br /&gt;
&lt;br /&gt;
At a site with such an M204XSVC SVC, if a non-SVC version of the M204XSVC module is linked into the Online (and the Online is APF authorized), that non-SVC version is used to initialize the XDM environment. Otherwise, if the INCLUDEs for M204XSVC are removed from the Online and IFAM link jobs, the M204XSVC SVC is called (if &amp;lt;var&amp;gt;[[XMEMSVC parameter|XMEMSVC]]&amp;lt;/var&amp;gt; is set). Once established, M204XSVC invokes routines by using PC instructions, and its only actual SVC call might be at initialization.&lt;/div&gt;</summary>
		<author><name>JAL</name></author>
	</entry>
</feed>