<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://try-as400.pocnet.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PoC</id>
	<title>Try-AS/400 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://try-as400.pocnet.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PoC"/>
	<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/wiki/Special:Contributions/PoC"/>
	<updated>2026-07-13T13:10:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=UNIX-User%27s_Cheater_Table&amp;diff=1765</id>
		<title>UNIX-User&#039;s Cheater Table</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=UNIX-User%27s_Cheater_Table&amp;diff=1765"/>
		<updated>2026-07-12T16:55:47Z</updated>

		<summary type="html">&lt;p&gt;PoC: Added whoami example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This table lists commands available in the &#039;&#039;CL-Environment&#039;&#039;, the classical OS/400-Shell, so to say. These do &#039;&#039;&#039;not&#039;&#039;&#039; apply to &#039;&#039;QSH&#039;&#039; or &#039;&#039;PASE&#039;&#039;, that are UNIX-like environments within OS/400.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!UNIX Command&lt;br /&gt;
!OS/400 Equivalent&lt;br /&gt;
!Remarks&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&#039;&#039;&#039;Files and File System&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;cat&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;cpyf&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Since OS/400 has no concept of stdin/stdout, these functions of cat don&#039;t apply here.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;chgcurlib&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;chgaut&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;grtobjaut&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;rvkobjaut&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;chown&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;chgrp&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;chgobjown&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;chgobjpgp&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;crtdupobj&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;tar c&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;sav(lib|obj| )&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;dspobjaut&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;wrklib&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;wrkobj&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Shows a scrollable list of selected objects, helps in modifying access rights.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;rnmobj&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;movobj&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;restore&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;tar [x|t]&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;rst(lib|obj| )&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;dspsavf&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;dsptap&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;test -f&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;chkobj&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;chkifsobj&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;vi&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;strseu&amp;lt;/code&amp;gt; for source physical files,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;edtf&amp;lt;/code&amp;gt; for stream files,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;strdfu option(5)&amp;lt;/code&amp;gt; for database files.&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|See [[Filesystems and Files on the AS/400]] for details. See [[IBM HTTP-Server for AS/400 Configuration]] for specialised command regarding web server config.&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&#039;&#039;&#039;Memory and Processes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;wrkshrpool&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|This is for displaying the amount of built-in RAM.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;at&amp;lt;/code&amp;gt; (scheduler)&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;wrkjobscde&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;sbmjob&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;wrkjobq qbatch&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;ps aux&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;ps -edf&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;wrkactjob&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;wrksysact&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&#039;&#039;&#039;Disk and I/O&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;df&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;strsst&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Access to precise disk space stats is available within &#039;&#039;system service tools&#039;&#039; only.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;fsck&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;rclstg&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|System needs to be in restricted mode.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;iostat -x&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;wrkdsksts&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;vmstat&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;dspsyssts&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Choose view option &#039;&#039;3&#039;&#039; after pressing &amp;lt;code&amp;gt;F19&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&#039;&#039;&#039;Networking&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;aping&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Surprise, command has same name!&amp;lt;br /&amp;gt;The latter is for SNA APPN.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;netstat&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;wrkappnsts&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;netstat&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Surprise, command has same name!&amp;lt;br /&amp;gt;The latter is for SNA APPN.&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&#039;&#039;&#039;Development&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;cc&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;crtcmod&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Create Object File from C-Source.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;ld&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;crtpgm&amp;lt;/code&amp;gt;,&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;crtsrvpgm&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Create runnable Program from Object File(s),&amp;lt;br&amp;gt;create Service Program (&amp;quot;Shared Library&amp;quot;) from Object File(s).&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|There is a crude port of &#039;&#039;make&#039;&#039; in the QUSRTOOLS library called [[Setting up TMKMAKE|TMKMAKE]]. See &#039;&#039;QUSRTOOLS/QATTINFO.TMKINFO&#039;&#039; for details.&amp;lt;ref&amp;gt;See also [https://www.mcpressonline.com/programming-other/general/programming-with-make-on-the-as400-part-i Programming with Make on the AS/400, Part I], and [https://www.mcpressonline.com/programming-other/general/programming-with-make-on-the-as400-part-2 Programming with Make on the AS/400, Part 2] on McPress Online.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;thinsp;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|No equivalent to GNU autoconf. Possible workaround: Manually tailored, static, universal &#039;&#039;config.h&#039;&#039; for each OS-Release (Compiler Version) based on existing documentation and/or manual tests.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;diff&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;cmppfm&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;patch&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;mrgsrc&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&#039;&#039;&#039;Other Topics&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;lpq&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;wrkoutq&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Displays all configured printer queues and count of entries.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;mailx&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;dspmsg&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;snddst&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Cron and at send mail if there was output. OS/400 sends &#039;&#039;messages&#039;&#039; and generates printer output (spooled file). Sending (SMTP) mail from the command line utilises a completely different facility.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;mt&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;dsptap&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;chktap&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;mysql&amp;lt;/code&amp;gt;,&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;isql&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;strsql&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Not limited to &#039;&#039;mysql&#039;&#039;, but more like a placeholder for any command line client accessing a database for entering SQL queries directly.&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;whoami&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;code&amp;gt;dspjob&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The table will be expanded over time.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Basic Commands]]&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Basic Knowledge‏]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Communications_Traces&amp;diff=1764</id>
		<title>Communications Traces</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Communications_Traces&amp;diff=1764"/>
		<updated>2026-07-11T11:05:20Z</updated>

		<summary type="html">&lt;p&gt;PoC: Note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Communications Traces&#039;&#039;&#039; are essentially very much akin to &#039;&#039;tcpdump&#039;&#039; or &#039;&#039;Wireshark&#039;&#039; on common platforms. It&#039;s a multi-step, non-interactive process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Command are examples and must be tailored to your particular environment!&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Start trace. Network traces are always taken from a line description object.&lt;br /&gt;
 strcmntrc cfgobj(trnline) cfgtype(*lin) maxstg(16M) usrdta(*max) trcfull(*stoptrc)&lt;br /&gt;
* Run your commands for generating traffic.&lt;br /&gt;
* Stop trace.&lt;br /&gt;
 endcmntrc cfgobj(trnline) cfgtype(*lin)&lt;br /&gt;
* Format a report from the trace data. Goes to the standard printer queue.&lt;br /&gt;
 prtcmntrc cfgobj(trnline) cfgtype(*lin) fmttcp(*no) fmtbcd(*no)&lt;br /&gt;
* Delete now unneeded Trace Data.&lt;br /&gt;
 dltcmntrc cfgobj(trnline) cfgtype(*lin)&lt;br /&gt;
&lt;br /&gt;
Optionally, this trace can be exported to a database file, to be e.&amp;amp;thinsp;g. downloaded via FTP for further treatment.&lt;br /&gt;
 crtpf file(mylib/qpcsmprt) rcdlen(132)&lt;br /&gt;
 cpysplf file(qpcsmprt) tofile(mylib/qpcsmprt) splnbr(1)&lt;br /&gt;
&lt;br /&gt;
[[Category: System Administration]]&lt;br /&gt;
[[Category: System Internals]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Communications_Traces&amp;diff=1763</id>
		<title>Communications Traces</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Communications_Traces&amp;diff=1763"/>
		<updated>2026-07-09T12:03:55Z</updated>

		<summary type="html">&lt;p&gt;PoC: Local copy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Communications Traces&#039;&#039;&#039; are essentially very much akin to &#039;&#039;tcpdump&#039;&#039; or &#039;&#039;Wireshark&#039;&#039; on common platforms. It&#039;s a multi-step, non-interactive process.&lt;br /&gt;
&lt;br /&gt;
* Start trace. Network traces are always taken from a line description object.&lt;br /&gt;
 strcmntrc cfgobj(trnline) cfgtype(*lin) maxstg(16M) usrdta(*max) trcfull(*stoptrc)&lt;br /&gt;
* Run your commands for generating traffic.&lt;br /&gt;
* Stop trace.&lt;br /&gt;
 endcmntrc cfgobj(trnline) cfgtype(*lin)&lt;br /&gt;
* Format a report from the trace data. Goes to the standard printer queue.&lt;br /&gt;
 prtcmntrc cfgobj(trnline) cfgtype(*lin) fmttcp(*no) fmtbcd(*no)&lt;br /&gt;
* Delete now unneeded Trace Data.&lt;br /&gt;
 dltcmntrc cfgobj(trnline) cfgtype(*lin)&lt;br /&gt;
&lt;br /&gt;
Optionally, this trace can be exported to a database file, to be e.&amp;amp;thinsp;g. downloaded via FTP for further treatment.&lt;br /&gt;
 crtpf file(mylib/qpcsmprt) rcdlen(132)&lt;br /&gt;
 cpysplf file(qpcsmprt) tofile(mylib/qpcsmprt) splnbr(1)&lt;br /&gt;
&lt;br /&gt;
[[Category: System Administration]]&lt;br /&gt;
[[Category: System Internals]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Communications_Traces&amp;diff=1762</id>
		<title>Communications Traces</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Communications_Traces&amp;diff=1762"/>
		<updated>2026-07-07T13:52:23Z</updated>

		<summary type="html">&lt;p&gt;PoC: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Communications Traces&#039;&#039;&#039; are essentially very much akin to &#039;&#039;tcpdump&#039;&#039; or &#039;&#039;Wireshark&#039;&#039; on common platforms. It&#039;s a multi-step, non-interactive process.&lt;br /&gt;
&lt;br /&gt;
* Start trace. Network traces are always taken from a line description object.&lt;br /&gt;
 strcmntrc cfgobj(trnline) cfgtype(*lin) maxstg(16M) usrdta(*max) trcfull(*stoptrc)&lt;br /&gt;
* Run your commands for generating traffic.&lt;br /&gt;
* Stop trace.&lt;br /&gt;
 endcmntrc cfgobj(trnline) cfgtype(*lin)&lt;br /&gt;
* Format a report from the trace data. Goes to the standard printer queue.&lt;br /&gt;
 prtcmntrc cfgobj(trnline) cfgtype(*lin) sltctld(fiona) fmttcp(*no) fmtbcd(*no)&lt;br /&gt;
* Delete now unneeded Trace Data.&lt;br /&gt;
 dltcmntrc cfgobj(trnline) cfgtype(*lin)&lt;br /&gt;
&lt;br /&gt;
[[Category: System Administration]]&lt;br /&gt;
[[Category: System Internals]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Communications_Traces&amp;diff=1761</id>
		<title>Communications Traces</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Communications_Traces&amp;diff=1761"/>
		<updated>2026-07-07T13:50:30Z</updated>

		<summary type="html">&lt;p&gt;PoC: new&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Communications Traces&#039;&#039;&#039; are essentially very much akin to &#039;&#039;tcpdump&#039;&#039; or &#039;&#039;Wireshark&#039;&#039; on common platforms. It&#039;s a multi-step, non-interactive process.&lt;br /&gt;
&lt;br /&gt;
* Start trace. Network traces are always taken from a line description object.&lt;br /&gt;
 strcmntrc cfgobj(trnline) cfgtype(*lin) maxstg(16M) usrdta(*max) trcfull(*stoptrc)&lt;br /&gt;
* Run your commands for generating traffic.&lt;br /&gt;
* Stop trace.&lt;br /&gt;
 endcmntrc cfgobj(trnline) cfgtype(*lin)&lt;br /&gt;
* Format a report from the trace data. Goes to the standard printer queue.&lt;br /&gt;
 prtcmntrc cfgobj(trnline) cfgtype(*lin) sltctld(fiona) fmttcp(*no) fmtbcd(*no)&lt;br /&gt;
* Delete now unneeded Trace Data.&lt;br /&gt;
dltcmntrc cfgobj(trnline) cfgtype(*lin)&lt;br /&gt;
&lt;br /&gt;
[[Category: System Administration]]&lt;br /&gt;
[[Category: System Internals]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=PCI-FSIOP_Cable&amp;diff=1760</id>
		<title>PCI-FSIOP Cable</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=PCI-FSIOP_Cable&amp;diff=1760"/>
		<updated>2026-06-28T21:09:21Z</updated>

		<summary type="html">&lt;p&gt;PoC: English&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Ibm_45H2433_ps2.jpg|thumb|right|PS/2- and serial-Brick]]&lt;br /&gt;
[[File:IPCS-2850-12.jpg|thumb|right|IPCS #2850 Primary board featuring a 333 MHz Pentium Overdrive processor]]&lt;br /&gt;
[[File:IPCS-285A.jpg|thumb|right|Daughter-card for the #2850 carrying ports and further PC chipset components]]&lt;br /&gt;
The add-on hardware &#039;&#039;&#039;internal PC server&#039;&#039;&#039;, or &#039;&#039;&#039;IPCS&#039;&#039;&#039;, or &#039;&#039;&#039;internal xSeries server&#039;&#039;&#039;, or &#039;&#039;&#039;internal Netfinity server&#039;&#039;&#039;, or &#039;&#039;&#039;FSIOP&#039;&#039;&#039;, or &#039;&#039;&#039;File Server I/O Processor&#039;&#039;&#039;, Feature #285x or #286x or similar require a special cable to connect essential human interface devices such as keyboard and mouse. IBM part number is 45H2433.&lt;br /&gt;
&lt;br /&gt;
The connector on the board side is a Mini-Centronics with 40 pins (MDR40). Breakout-boards are available from some vendors, but no single plug, or cable to create a fan-out yourself.&lt;br /&gt;
&lt;br /&gt;
This is the pinout of the IBM 45H2433 cable:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|IPCS&amp;lt;br /&amp;gt;MDR40&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|RS-232 serial&amp;lt;br /&amp;gt;DE9&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|PS/2 (Mini-DIN 8)&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|IEEE 1284 parallel&amp;lt;br /&amp;gt;DB25&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Remark&lt;br /&gt;
|-&lt;br /&gt;
!Keyboard&lt;br /&gt;
!Mouse&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|8&lt;br /&gt;
|Data6&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|18&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|7&lt;br /&gt;
|Data5&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|HostClock&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|6&lt;br /&gt;
|Data4&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|6&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|17&lt;br /&gt;
|1284 Active&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|7&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|Data3&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|8&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|16&lt;br /&gt;
|NReverseRequest&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|9&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|Data2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|10&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|15&lt;br /&gt;
|PeriphRequest&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|11&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|Data1&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|12&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|14&lt;br /&gt;
|HostAck&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|13&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|Data0&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|14&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;5&amp;quot;|NC&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|15&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Clock&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|16&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Gnd&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|17&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|8&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|CTS&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|18&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|TxD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|19&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|6&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|DSR&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|DCD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|9&lt;br /&gt;
|Data7&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|23&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|24&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|24&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|25&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|13&lt;br /&gt;
|X-Flag&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|26&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|27&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|12&lt;br /&gt;
|NAckReverse&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|28&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|23&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|29&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|11&lt;br /&gt;
|PeriphAck&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|30&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|25&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|31&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|10&lt;br /&gt;
|PeriphClock&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|32&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|19&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|33&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Data&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|34&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Clock&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|35&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Data&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|36&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|37&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|9&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|RI&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|38&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|DTR&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|39&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|7&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|RTS&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|40&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|RxD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to Mathias for his help when probing the pinout of an existing cable!&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Pinouts for standard PC ports at pinouts.ru:&lt;br /&gt;
** [http://pinouts.ru/SerialPorts/Serial9_pinout.shtml PC serial port (RS-232 DE9) pinout]&lt;br /&gt;
** [http://pinouts.ru/Inputs/KeyboardPC6_pinout.shtml Keyboard PS/2 pinout]&lt;br /&gt;
** [http://pinouts.ru/Inputs/PS2Mouse_pinout.shtml Mouse (PS/2) pinout]&lt;br /&gt;
** [http://pinouts.ru/ParallelPorts/ParallelECP_pinout.shtml ECP Parallel LPT port (IEEE-1284A) pinout]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/en/POWER6/iphah/cablesandcards.htm Connectors and adapters] bei IBM.com&lt;br /&gt;
&lt;br /&gt;
[[Category: Hardware Documentation]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=PCI-FSIOP_Cable&amp;diff=1759</id>
		<title>PCI-FSIOP Cable</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=PCI-FSIOP_Cable&amp;diff=1759"/>
		<updated>2026-06-28T21:08:56Z</updated>

		<summary type="html">&lt;p&gt;PoC: New&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Ibm_45H2433_ps2.jpg|thumb|right|PS/2- and Seriell-Brick]]&lt;br /&gt;
[[File:IPCS-2850-12.jpg|thumb|right|IPCS #2850 Primary board featuring a 333 MHz Pentium Overdrive processor]]&lt;br /&gt;
[[File:IPCS-285A.jpg|thumb|right|Daughter-card for the #2850 carrying ports and further PC chipset components]]&lt;br /&gt;
The add-on hardware &#039;&#039;&#039;internal PC server&#039;&#039;&#039;, or &#039;&#039;&#039;IPCS&#039;&#039;&#039;, or &#039;&#039;&#039;internal xSeries server&#039;&#039;&#039;, or &#039;&#039;&#039;internal Netfinity server&#039;&#039;&#039;, or &#039;&#039;&#039;FSIOP&#039;&#039;&#039;, or &#039;&#039;&#039;File Server I/O Processor&#039;&#039;&#039;, Feature #285x or #286x or similar require a special cable to connect essential human interface devices such as keyboard and mouse. IBM part number is 45H2433.&lt;br /&gt;
&lt;br /&gt;
The connector on the board side is a Mini-Centronics with 40 pins (MDR40). Breakout-boards are available from some vendors, but no single plug, or cable to create a fan-out yourself.&lt;br /&gt;
&lt;br /&gt;
This is the pinout of the IBM 45H2433 cable:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|IPCS&amp;lt;br /&amp;gt;MDR40&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|RS-232 serial&amp;lt;br /&amp;gt;DE9&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|PS/2 (Mini-DIN 8)&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|IEEE 1284 parallel&amp;lt;br /&amp;gt;DB25&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Remark&lt;br /&gt;
|-&lt;br /&gt;
!Keyboard&lt;br /&gt;
!Mouse&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|8&lt;br /&gt;
|Data6&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|18&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|7&lt;br /&gt;
|Data5&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|HostClock&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|6&lt;br /&gt;
|Data4&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|6&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|17&lt;br /&gt;
|1284 Active&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|7&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|Data3&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|8&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|16&lt;br /&gt;
|NReverseRequest&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|9&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|Data2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|10&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|15&lt;br /&gt;
|PeriphRequest&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|11&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|Data1&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|12&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|14&lt;br /&gt;
|HostAck&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|13&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|Data0&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|14&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;5&amp;quot;|NC&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|15&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Clock&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|16&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Gnd&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|17&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|8&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|CTS&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|18&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|3&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|TxD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|19&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|6&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|DSR&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|DCD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|9&lt;br /&gt;
|Data7&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|23&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|24&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|24&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|25&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|13&lt;br /&gt;
|X-Flag&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|26&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|27&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|12&lt;br /&gt;
|NAckReverse&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|28&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|23&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|29&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|11&lt;br /&gt;
|PeriphAck&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|30&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|25&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|31&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|10&lt;br /&gt;
|PeriphClock&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|32&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|19&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|33&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Data&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|34&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|5&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Clock&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|35&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Data&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|36&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|37&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|9&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|RI&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|38&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|DTR&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|39&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|7&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|RTS&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|40&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|RxD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to Mathias for his help when probing the pinout of an existing cable!&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Pinouts for standard PC ports at pinouts.ru:&lt;br /&gt;
** [http://pinouts.ru/SerialPorts/Serial9_pinout.shtml PC serial port (RS-232 DE9) pinout]&lt;br /&gt;
** [http://pinouts.ru/Inputs/KeyboardPC6_pinout.shtml Keyboard PS/2 pinout]&lt;br /&gt;
** [http://pinouts.ru/Inputs/PS2Mouse_pinout.shtml Mouse (PS/2) pinout]&lt;br /&gt;
** [http://pinouts.ru/ParallelPorts/ParallelECP_pinout.shtml ECP Parallel LPT port (IEEE-1284A) pinout]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/en/POWER6/iphah/cablesandcards.htm Connectors and adapters] bei IBM.com&lt;br /&gt;
&lt;br /&gt;
[[Category: Hardware Documentation]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=File:Ibm_45H2433_ps2.jpg&amp;diff=1758</id>
		<title>File:Ibm 45H2433 ps2.jpg</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=File:Ibm_45H2433_ps2.jpg&amp;diff=1758"/>
		<updated>2026-06-28T21:01:29Z</updated>

		<summary type="html">&lt;p&gt;PoC: Own photography&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Own photography&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Configuring_the_OS/400_DNS_server_without_OpNav&amp;diff=1757</id>
		<title>Configuring the OS/400 DNS server without OpNav</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Configuring_the_OS/400_DNS_server_without_OpNav&amp;diff=1757"/>
		<updated>2026-06-28T19:53:51Z</updated>

		<summary type="html">&lt;p&gt;PoC: New&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;OS/400 DNS server&#039;&#039;&#039; can officially be configured via &#039;&#039;&#039;OpNav&#039;&#039;&#039; only. However, there are other ways…&lt;br /&gt;
&lt;br /&gt;
OpNav is a component of ClientAccess for Windows, which is installed along with OS/400.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
The DNS server of OS/400 V4R2 up to and including V4R5 is based on BIND 4.9.3 from the ISC. Therefore, the configuration directives from ISC apply immediately. At startup, the system looks for the main configuration file &#039;&#039;/QIBM/USERDATA/OS400/DNS/BOOT&#039;&#039;. You can easily create this file yourself:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dns DNS von OS/400 V4R2 bis einschliesslich V4R5 basiert auf BIND 4.9.3 vom ISC. Somit gelten auch die Konfigurationsdirektiven unmittelbar. Beim Start wird nach der Hauptkonfiguratiosndatei &#039;&#039;/QIBM/USERDATA/OS400/DNS/BOOT&#039;&#039; gesucht. Diese kann man bequem selbst erstellen:&lt;br /&gt;
 edtf &#039;/qibm/userdata/os400/dns/boot&#039;&lt;br /&gt;
&lt;br /&gt;
Example file content:&lt;br /&gt;
 ; Working Directory&lt;br /&gt;
 directory /QIBM/USERDATA/OS400/DNS&lt;br /&gt;
 ; Root-DNS-File&lt;br /&gt;
 cache . NAMED.ROOT&lt;br /&gt;
 ; Zone Statements&lt;br /&gt;
 secondary myzone.com 192.168.1.11 db.myzone.com&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edtf&#039;&#039; is very similar to &#039;&#039;seu&#039;&#039; in its operation . Alternatively, this file can be created elsewhere and uploaded to the appropriate location in ASCII mode via FTP.&lt;br /&gt;
&lt;br /&gt;
It is recommended to import an up-to-date root zone file. This can be obtained, for example, from [https://www.internic.net/domain/named.root Internic], and transferred via FTP to &#039;&#039;qdns/qatocdnsrv.root&#039;&#039; as well as to &#039;&#039;/qibm/userdata/os400/dns/root.hint&#039;&#039;, as specified in the corresponding directive.&amp;lt;ref&amp;gt;BIND cannot deal with a file in a library. It&#039;s unclear why there is a copy in a &#039;&#039;qsys.lib&#039;&#039; file.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory permissions must be adjusted before starting the DNS server:&lt;br /&gt;
 strqsh cmd(&#039;chown qtcp /qibm/userdata/os400/dns&#039;)&lt;br /&gt;
&lt;br /&gt;
Through the &amp;lt;code&amp;gt;chgdnsa&amp;lt;/code&amp;gt; command, you can set &#039;&#039;autostart at TCP startup&#039;&#039; to &#039;&#039;*yes&#039;&#039;, as well as a desired debug level, and finally issue &amp;lt;code&amp;gt;strtcpsvr *dns&amp;lt;/code&amp;gt; to start the server.&lt;br /&gt;
&lt;br /&gt;
Less encouraging is the fact that when testing this DNS as a secondary to BIND 9.10.3 running on Debian Linux, no secondary zones can be loaded. The primary server pushes the zones out via AXFR, but the slave on the AS/400 does not accept them. According to the AXFR job log, BIND expects more data bytes than it receives. A fix to this behavior is not known.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.cs.ait.ac.th/~on/O/oreilly/tcpip/dnsbind/ch04_03.htm Setting Up a BIND Configuration File], O&#039;Reilly Books&lt;br /&gt;
* [https://www.redbooks.ibm.com/redbooks/pdfs/sg245147.pdf AS/400 TCP/IP Autoconfiguration: DNS and DHCP Support], IBM RedBooks&lt;br /&gt;
&lt;br /&gt;
[[Category: Software Configuration Guide]]&lt;br /&gt;
[[Category: System Administration]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=IBM_BOOK_format&amp;diff=1756</id>
		<title>IBM BOOK format</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=IBM_BOOK_format&amp;diff=1756"/>
		<updated>2026-06-12T22:05:26Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Internal structure */ More precise&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|Rework, add information}}&lt;br /&gt;
&#039;&#039;&#039;IBM BookManager Softcopy&#039;&#039;&#039; is IBM&#039;s legacy online documentation system, created in the 1980s. It was historically used mostly on mainframes, midrange (AS/400) and OS/2, although it also saw some use in other areas including AIX.&lt;br /&gt;
&lt;br /&gt;
IBM no longer uses it for new documentations of its products, but there is an immense quantity of legacy electronic documentation from the period when IBM actively used it (from the 1980s thru 2010s), particularly documentation CD-ROMs/DVD-ROMs and images thereof.&lt;br /&gt;
&lt;br /&gt;
The file-internal format apparently is called IBMIDDOC.&lt;br /&gt;
&lt;br /&gt;
The standard DOS style extension is &amp;lt;code&amp;gt;BOO&amp;lt;/code&amp;gt;, and &amp;quot;application/book&amp;quot; is sometimes used as MIME type, but was never officially registered.&lt;br /&gt;
&lt;br /&gt;
== Internal structure ==&lt;br /&gt;
The header of BOO files sometimes contains an EBCDIC copyright notice (this is true even for books for ASCII-based platforms such as OS/2). The file contents is almost certainly also in EBCDIC, but is not readable beyond the header. Most likely this due to compression with an unknown algorithm (a relative of IBM&#039;s well-known proprietary algorithm such as TERSE?). However, the data seems too repetitive to be compressed–possibly it is just some obfuscation mechanism then?&lt;br /&gt;
&lt;br /&gt;
* Bytes 1-2: unknown 2 bytes probably flags. second byte never zero, first byte often is (but not always). probably not a size, since 0001 is a common value. &lt;br /&gt;
* Bytes 3-6: these 4 bytes appear to always be zero&lt;br /&gt;
* Bytes 7: unknown, can be zero, probably more flags???&lt;br /&gt;
Bytes 8+: EBCDIC copyright string. Can start with one or more EBCDIC spaces (0x40), sometimes also (0xB4) (some kind of control character?)&lt;br /&gt;
&lt;br /&gt;
The header is 256 bytes long. The copyright string is padded to the end of the header with 0x40 (EBCDIC space). However, it seems to have a null terminator (0x00) at the end of the actual text, before the space padding.&lt;br /&gt;
&lt;br /&gt;
What follows from 256 bytes onwards looks like it could be some kind of compression dictionary, maybe a modified TERSE algorithm?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;It looks like the file is composed of 256 byte records (so file size should be an integer multiple of 256), often with some all-zeros records appended to the end.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is weak evidence that the file format might be record oriented with 4096 byte records: IBM upload instructions into MVS datasets hint towards that. All known files so far have a file size which can be divided by 4096 without remainder. If the file size doesn&#039;t match, it&#039;s padded with binary zeros.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Reviving InfoSeeker]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.edm2.com/index.php/BookManager BookManager Releases] contains history of IBM BookManager releases&lt;br /&gt;
* [https://www.ibm.com/support/pages/using-pdfs-and-bookmanager-books-your-workstation-or-mainframe Using PDFs and BookManager Books on your workstation or mainframe], IBM.com&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Terse_(file_format) Terse (file format)], Wikipedia&lt;br /&gt;
* [https://en.wikipedia.org/wiki/LZ77_and_LZ78 LZ77 and LZ78] compression algorithms, Wikipedia&lt;br /&gt;
* [https://patents.google.com/patent/US4814746A/en?oq=4814746 Data compression method] for TERSE, patents.google.com&lt;br /&gt;
* [http://fileformats.archiveteam.org/wiki/ZIP ZIP archive file format], archiveteam.org, mentions TERSE.&lt;br /&gt;
* [https://hercules-390.yahoogroups.narkive.com/gYwJ3QUu/terse-for-pcs-windows-aix-linux terse for PCs (Windows, AIX, Linux ....)], hercules-390@yahoogroups.com&lt;br /&gt;
* [https://bit.listserv.ibm-main.narkive.com/82nDDwrh/trsmain-question TRSMAIN question], IBM-Main mailing list&lt;br /&gt;
* [https://share.confex.com/share/121/webprogram/Handout/Session14242/14242-%20zOS%20Documentation%20Search%20Strategies%20%28Final%20Edition%29.pdf 14242: z/OS Documentation Search Strategies], presentation slides in PDF format&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: System Internals]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalThumb&amp;diff=1755</id>
		<title>Template:TerminalThumb</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalThumb&amp;diff=1755"/>
		<updated>2026-06-05T20:26:06Z</updated>

		<summary type="html">&lt;p&gt;PoC: Another try&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;thumb tright&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumbinner&amp;quot; style=&amp;quot;width:82ch;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;terminalscreen&amp;quot;&amp;gt;{{{1}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumbcaption&amp;quot;&amp;gt;{{{2|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1754</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1754"/>
		<updated>2026-06-05T20:25:09Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Terminal CSS Test */ &amp;#039;nother test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Program error&#039;&#039; message (CEE9901) is shown in the message line&amp;lt;ref&amp;gt;In fact, the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call is shown, CEE9901 appears in the second level text.&amp;lt;/ref&amp;gt;, message text is only put into the job log&lt;br /&gt;
|Message text is put into the spool file log, followed by &#039;&#039;program error&#039;&#039; message (CEE9901)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line, and put into the job log, followed by &#039;&#039;program error&#039;&#039; message with the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call&lt;br /&gt;
|Message is put into the spool file, sev 40, followed by CPC2402: &#039;&#039;Job ended. Cancel message received at command processor.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;, and put into the job log&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Batch results were checked with &amp;lt;code&amp;gt;sbmjob cmd(call pgm(myqmhsndpm)) job(myqmhsndpm) log(4 0 *seclvl) logclpgm(*yes)&lt;br /&gt;
&amp;lt;/code&amp;gt;, to force a job log in any case.&lt;br /&gt;
&lt;br /&gt;
== Terminal CSS Test ==&lt;br /&gt;
{{TerminalScreen&lt;br /&gt;
|align=right&lt;br /&gt;
|width=60ch&lt;br /&gt;
|1=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
                                               System  . . . . . :   NIBBLER&lt;br /&gt;
                                               Subsystem . . . . :   QINTER&lt;br /&gt;
                                               Bildschirm  . . . :   KIFS1&lt;br /&gt;
&lt;br /&gt;
                Benutzer  . . . . . . . . . . . .   &lt;br /&gt;
                Kennwort  . . . . . . . . . . . .   __________&lt;br /&gt;
                Programm/Prozedur . . . . . . . .   __________&lt;br /&gt;
                Menü  . . . . . . . . . . . . . .   __________&lt;br /&gt;
                Aktuelle Bibliothek . . . . . . .   __________&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        (C) COPYRIGHT IBM CORP. 1980, 1999.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;|2=AS/400 Signon screen}}&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1753</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1753"/>
		<updated>2026-06-05T20:23:46Z</updated>

		<summary type="html">&lt;p&gt;PoC: More CSS magic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Terminal-style output */&lt;br /&gt;
&lt;br /&gt;
.terminalthumb {&lt;br /&gt;
    float: right;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    margin: 0 0 1em 1em;&lt;br /&gt;
    border: 1px solid #a2a9b1;&lt;br /&gt;
    background: #f8f9fa;&lt;br /&gt;
    padding: 3px;&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminalscreen {&lt;br /&gt;
    background: #000;&lt;br /&gt;
    border: 1px solid #444;&lt;br /&gt;
    color: #00ff00;&lt;br /&gt;
    font-family: monospace;&lt;br /&gt;
    min-height: 24em;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
    white-space: pre;&lt;br /&gt;
    width: 80ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminalthumb-right {&lt;br /&gt;
    float: right;&lt;br /&gt;
    margin: 0 0 1em 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminalthumb-left {&lt;br /&gt;
    float: left;&lt;br /&gt;
    margin: 0 1em 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminalthumb-center {&lt;br /&gt;
    float: none;&lt;br /&gt;
    margin: 1em auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminalcaption {&lt;br /&gt;
    padding: 0.3em 0.1em 0;&lt;br /&gt;
    font-size: 88%;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalThumb&amp;diff=1752</id>
		<title>Template:TerminalThumb</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalThumb&amp;diff=1752"/>
		<updated>2026-06-05T20:22:55Z</updated>

		<summary type="html">&lt;p&gt;PoC: More thumbing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;terminalthumb terminalthumb-{{{align|right}}}&amp;quot;&lt;br /&gt;
     style=&amp;quot;width: {{{width|auto}}};&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;terminalscreen&amp;quot;&amp;gt;{{{1}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;terminalcaption&amp;quot;&amp;gt;{{{2|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1751</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1751"/>
		<updated>2026-06-05T14:52:29Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Terminal CSS Test */ Thumb?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Program error&#039;&#039; message (CEE9901) is shown in the message line&amp;lt;ref&amp;gt;In fact, the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call is shown, CEE9901 appears in the second level text.&amp;lt;/ref&amp;gt;, message text is only put into the job log&lt;br /&gt;
|Message text is put into the spool file log, followed by &#039;&#039;program error&#039;&#039; message (CEE9901)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line, and put into the job log, followed by &#039;&#039;program error&#039;&#039; message with the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call&lt;br /&gt;
|Message is put into the spool file, sev 40, followed by CPC2402: &#039;&#039;Job ended. Cancel message received at command processor.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;, and put into the job log&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Batch results were checked with &amp;lt;code&amp;gt;sbmjob cmd(call pgm(myqmhsndpm)) job(myqmhsndpm) log(4 0 *seclvl) logclpgm(*yes)&lt;br /&gt;
&amp;lt;/code&amp;gt;, to force a job log in any case.&lt;br /&gt;
&lt;br /&gt;
== Terminal CSS Test ==&lt;br /&gt;
{{TerminalThumb|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
                                               System  . . . . . :   NIBBLER&lt;br /&gt;
                                               Subsystem . . . . :   QINTER&lt;br /&gt;
                                               Bildschirm  . . . :   KIFS1&lt;br /&gt;
&lt;br /&gt;
                Benutzer  . . . . . . . . . . . .   &lt;br /&gt;
                Kennwort  . . . . . . . . . . . .   __________&lt;br /&gt;
                Programm/Prozedur . . . . . . . .   __________&lt;br /&gt;
                Menü  . . . . . . . . . . . . . .   __________&lt;br /&gt;
                Aktuelle Bibliothek . . . . . . .   __________&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        (C) COPYRIGHT IBM CORP. 1980, 1999.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;|AS/400 Signon screen}}&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1750</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1750"/>
		<updated>2026-06-05T14:51:04Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Terminal CSS Test */ AS/400-Look&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Program error&#039;&#039; message (CEE9901) is shown in the message line&amp;lt;ref&amp;gt;In fact, the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call is shown, CEE9901 appears in the second level text.&amp;lt;/ref&amp;gt;, message text is only put into the job log&lt;br /&gt;
|Message text is put into the spool file log, followed by &#039;&#039;program error&#039;&#039; message (CEE9901)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line, and put into the job log, followed by &#039;&#039;program error&#039;&#039; message with the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call&lt;br /&gt;
|Message is put into the spool file, sev 40, followed by CPC2402: &#039;&#039;Job ended. Cancel message received at command processor.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;, and put into the job log&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Batch results were checked with &amp;lt;code&amp;gt;sbmjob cmd(call pgm(myqmhsndpm)) job(myqmhsndpm) log(4 0 *seclvl) logclpgm(*yes)&lt;br /&gt;
&amp;lt;/code&amp;gt;, to force a job log in any case.&lt;br /&gt;
&lt;br /&gt;
== Terminal CSS Test ==&lt;br /&gt;
{{TerminalScreen|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
                                               System  . . . . . :   NIBBLER&lt;br /&gt;
                                               Subsystem . . . . :   QINTER&lt;br /&gt;
                                               Bildschirm  . . . :   KIFS1&lt;br /&gt;
&lt;br /&gt;
                Benutzer  . . . . . . . . . . . .   &lt;br /&gt;
                Kennwort  . . . . . . . . . . . .   __________&lt;br /&gt;
                Programm/Prozedur . . . . . . . .   __________&lt;br /&gt;
                Menü  . . . . . . . . . . . . . .   __________&lt;br /&gt;
                Aktuelle Bibliothek . . . . . . .   __________&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        (C) COPYRIGHT IBM CORP. 1980, 1999.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;|AS/400 Signon screen}}&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalThumb&amp;diff=1749</id>
		<title>Template:TerminalThumb</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalThumb&amp;diff=1749"/>
		<updated>2026-06-05T14:50:16Z</updated>

		<summary type="html">&lt;p&gt;PoC: New&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;terminalthumb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;terminalscreen&amp;quot;&amp;gt;{{{1}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;terminalcaption&amp;quot;&amp;gt;{{{2|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1748</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1748"/>
		<updated>2026-06-05T14:48:26Z</updated>

		<summary type="html">&lt;p&gt;PoC: Expansion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Terminal-style output */&lt;br /&gt;
&lt;br /&gt;
.terminalthumb {&lt;br /&gt;
    float: right;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    margin: 0 0 1em 1em;&lt;br /&gt;
    border: 1px solid #a2a9b1;&lt;br /&gt;
    background: #f8f9fa;&lt;br /&gt;
    padding: 3px;&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminalscreen {&lt;br /&gt;
    background: #000;&lt;br /&gt;
    border: 1px solid #444;&lt;br /&gt;
    color: #00ff00;&lt;br /&gt;
    font-family: monospace;&lt;br /&gt;
    min-height: 24em;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
    white-space: pre;&lt;br /&gt;
    width: 80ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminalcaption {&lt;br /&gt;
    padding: 0.3em 0.1em 0;&lt;br /&gt;
    font-size: 88%;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1747</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1747"/>
		<updated>2026-06-04T13:04:16Z</updated>

		<summary type="html">&lt;p&gt;PoC: Undo revision 1746 by PoC (talk) Use div&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;terminalscreen&amp;quot;&amp;gt;{{{1}}}&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1746</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1746"/>
		<updated>2026-06-04T13:02:21Z</updated>

		<summary type="html">&lt;p&gt;PoC: Test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Expanded? {{{1}}}&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1745</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1745"/>
		<updated>2026-06-04T13:02:00Z</updated>

		<summary type="html">&lt;p&gt;PoC: Undo revision 1744 by PoC (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminalscreen&amp;quot;&amp;gt;{{{1}}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1744</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1744"/>
		<updated>2026-06-04T13:01:38Z</updated>

		<summary type="html">&lt;p&gt;PoC: Test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;{{{1}}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1743</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1743"/>
		<updated>2026-06-04T13:00:29Z</updated>

		<summary type="html">&lt;p&gt;PoC: Undo revision 1742 by PoC (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminalscreen&amp;quot;&amp;gt;{{{1}}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1742</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1742"/>
		<updated>2026-06-04T12:59:40Z</updated>

		<summary type="html">&lt;p&gt;PoC: Test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Parameter: {{{1}}}&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1741</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1741"/>
		<updated>2026-06-04T12:58:59Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Terminal CSS Test */ save&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Program error&#039;&#039; message (CEE9901) is shown in the message line&amp;lt;ref&amp;gt;In fact, the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call is shown, CEE9901 appears in the second level text.&amp;lt;/ref&amp;gt;, message text is only put into the job log&lt;br /&gt;
|Message text is put into the spool file log, followed by &#039;&#039;program error&#039;&#039; message (CEE9901)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line, and put into the job log, followed by &#039;&#039;program error&#039;&#039; message with the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call&lt;br /&gt;
|Message is put into the spool file, sev 40, followed by CPC2402: &#039;&#039;Job ended. Cancel message received at command processor.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;, and put into the job log&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Batch results were checked with &amp;lt;code&amp;gt;sbmjob cmd(call pgm(myqmhsndpm)) job(myqmhsndpm) log(4 0 *seclvl) logclpgm(*yes)&lt;br /&gt;
&amp;lt;/code&amp;gt;, to force a job log in any case.&lt;br /&gt;
&lt;br /&gt;
== Terminal CSS Test ==&lt;br /&gt;
{{TerminalScreen|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[root@host ~]# zpool status&lt;br /&gt;
  pool: tank&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1740</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1740"/>
		<updated>2026-06-04T12:48:24Z</updated>

		<summary type="html">&lt;p&gt;PoC: Wrap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminalscreen&amp;quot;&amp;gt;{{{1}}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1739</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1739"/>
		<updated>2026-06-04T12:46:34Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Terminal CSS Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Program error&#039;&#039; message (CEE9901) is shown in the message line&amp;lt;ref&amp;gt;In fact, the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call is shown, CEE9901 appears in the second level text.&amp;lt;/ref&amp;gt;, message text is only put into the job log&lt;br /&gt;
|Message text is put into the spool file log, followed by &#039;&#039;program error&#039;&#039; message (CEE9901)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line, and put into the job log, followed by &#039;&#039;program error&#039;&#039; message with the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call&lt;br /&gt;
|Message is put into the spool file, sev 40, followed by CPC2402: &#039;&#039;Job ended. Cancel message received at command processor.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;, and put into the job log&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Batch results were checked with &amp;lt;code&amp;gt;sbmjob cmd(call pgm(myqmhsndpm)) job(myqmhsndpm) log(4 0 *seclvl) logclpgm(*yes)&lt;br /&gt;
&amp;lt;/code&amp;gt;, to force a job log in any case.&lt;br /&gt;
&lt;br /&gt;
== Terminal CSS Test ==&lt;br /&gt;
{{TerminalScreen|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[root@host ~]# zpool status&lt;br /&gt;
  pool: tank&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1738</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1738"/>
		<updated>2026-06-04T12:44:35Z</updated>

		<summary type="html">&lt;p&gt;PoC: PoC moved page Template:Terminal to Template:TerminalScreen without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminalscreen&amp;quot;&amp;gt;&lt;br /&gt;
{{{1}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1737</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1737"/>
		<updated>2026-06-04T12:44:10Z</updated>

		<summary type="html">&lt;p&gt;PoC: renamed class&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminalscreen&amp;quot;&amp;gt;&lt;br /&gt;
{{{1}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1736</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1736"/>
		<updated>2026-06-04T12:43:50Z</updated>

		<summary type="html">&lt;p&gt;PoC: reduce to monochrome&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Terminal-style output */&lt;br /&gt;
&lt;br /&gt;
.terminalscreen {&lt;br /&gt;
    background: #000;&lt;br /&gt;
    border: 1px solid #444;&lt;br /&gt;
    color: #00ff00;&lt;br /&gt;
    font-family: monospace;&lt;br /&gt;
    min-height: 24em;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
    white-space: pre;&lt;br /&gt;
    width: 80ch;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1735</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1735"/>
		<updated>2026-06-04T12:42:06Z</updated>

		<summary type="html">&lt;p&gt;PoC: Test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Program error&#039;&#039; message (CEE9901) is shown in the message line&amp;lt;ref&amp;gt;In fact, the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call is shown, CEE9901 appears in the second level text.&amp;lt;/ref&amp;gt;, message text is only put into the job log&lt;br /&gt;
|Message text is put into the spool file log, followed by &#039;&#039;program error&#039;&#039; message (CEE9901)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line, and put into the job log, followed by &#039;&#039;program error&#039;&#039; message with the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call&lt;br /&gt;
|Message is put into the spool file, sev 40, followed by CPC2402: &#039;&#039;Job ended. Cancel message received at command processor.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;, and put into the job log&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Batch results were checked with &amp;lt;code&amp;gt;sbmjob cmd(call pgm(myqmhsndpm)) job(myqmhsndpm) log(4 0 *seclvl) logclpgm(*yes)&lt;br /&gt;
&amp;lt;/code&amp;gt;, to force a job log in any case.&lt;br /&gt;
&lt;br /&gt;
== Terminal CSS Test ==&lt;br /&gt;
{{Terminal|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[root@host ~]# zpool status&lt;br /&gt;
  pool: tank&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1734</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1734"/>
		<updated>2026-06-04T12:41:55Z</updated>

		<summary type="html">&lt;p&gt;PoC: Try&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminal&amp;quot;&amp;gt;&lt;br /&gt;
{{{1}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1733</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1733"/>
		<updated>2026-06-04T12:41:07Z</updated>

		<summary type="html">&lt;p&gt;PoC: There need to be three&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminal&amp;quot;&amp;gt;{{{1}}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1732</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1732"/>
		<updated>2026-06-04T12:39:53Z</updated>

		<summary type="html">&lt;p&gt;PoC: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminal&amp;quot;&amp;gt;{{{1}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1731</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1731"/>
		<updated>2026-06-04T12:38:15Z</updated>

		<summary type="html">&lt;p&gt;PoC: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminal&amp;quot;&amp;gt;{{{1}}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1730</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1730"/>
		<updated>2026-06-04T12:36:04Z</updated>

		<summary type="html">&lt;p&gt;PoC: +border&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Terminal-style output */&lt;br /&gt;
&lt;br /&gt;
.terminal {&lt;br /&gt;
    background: #000;&lt;br /&gt;
    border: 1px solid #444;&lt;br /&gt;
    color: #00ff00;&lt;br /&gt;
    font-family: monospace;&lt;br /&gt;
    min-height: 24em;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
    white-space: pre;&lt;br /&gt;
    width: 80ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-red {&lt;br /&gt;
    color: #ff6060;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-yellow {&lt;br /&gt;
    color: #ffff60;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-blue {&lt;br /&gt;
    color: #80c0ff;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1729</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1729"/>
		<updated>2026-06-04T12:34:24Z</updated>

		<summary type="html">&lt;p&gt;PoC: Updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre class=&amp;quot;terminal&amp;quot;&amp;gt;&lt;br /&gt;
{{{1}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1728</id>
		<title>Template:TerminalScreen</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Template:TerminalScreen&amp;diff=1728"/>
		<updated>2026-06-04T12:29:31Z</updated>

		<summary type="html">&lt;p&gt;PoC: Reintroduce terminal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;terminal&amp;quot;&amp;gt;&lt;br /&gt;
{{{1}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1727</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1727"/>
		<updated>2026-06-04T12:23:35Z</updated>

		<summary type="html">&lt;p&gt;PoC: 80x24&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Terminal-style output */&lt;br /&gt;
&lt;br /&gt;
.terminal {&lt;br /&gt;
    background: #000;&lt;br /&gt;
    color: #00ff00;&lt;br /&gt;
    font-family: monospace;&lt;br /&gt;
    width: 80ch;&lt;br /&gt;
    min-height: 24em;&lt;br /&gt;
    white-space: pre;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-red {&lt;br /&gt;
    color: #ff6060;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-yellow {&lt;br /&gt;
    color: #ffff60;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-blue {&lt;br /&gt;
    color: #80c0ff;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1726</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=MediaWiki:Common.css&amp;diff=1726"/>
		<updated>2026-06-04T12:20:17Z</updated>

		<summary type="html">&lt;p&gt;PoC: Terminal screen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Terminal-style output */&lt;br /&gt;
&lt;br /&gt;
.terminal {&lt;br /&gt;
    background: #000;&lt;br /&gt;
    color: #d0d0d0;&lt;br /&gt;
    font-family: Consolas, Monaco, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    line-height: 1.2;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
    border: 1px solid #444;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
    overflow-x: auto;&lt;br /&gt;
    white-space: pre;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-green {&lt;br /&gt;
    color: #00ff00;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-red {&lt;br /&gt;
    color: #ff6060;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-yellow {&lt;br /&gt;
    color: #ffff60;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.terminal-blue {&lt;br /&gt;
    color: #80c0ff;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Wrkprb_needs_long_time_to_start&amp;diff=1725</id>
		<title>Wrkprb needs long time to start</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Wrkprb_needs_long_time_to_start&amp;diff=1725"/>
		<updated>2026-05-21T22:14:33Z</updated>

		<summary type="html">&lt;p&gt;PoC: rework: Does not  work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Over time, it might become apparent that &#039;&#039;&#039;Wrkprb needs longer time to start&#039;&#039;&#039;, especially if the problem handling facility was used heavily on a slow machine.&amp;lt;ref&amp;gt;Like a 9401-150.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Problem description ==&lt;br /&gt;
This stems from the fact that the used database files grow indefinitely, because they were created with the flag &#039;&#039;REUSEDLT&#039;&#039; disabled. That means, deleted records stay forever, but cannot be accessed. In my case, the PF had 36&amp;amp;thinsp;KiB, and the accompanying LF 24&amp;amp;thinsp;KiB. This is laughably small.&lt;br /&gt;
&lt;br /&gt;
So it&#039;s not clear why the command experiences gradual slowdown over time.&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: System Administration‏‎]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Porting_C-Source_to_OS/400&amp;diff=1724</id>
		<title>Porting C-Source to OS/400</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Porting_C-Source_to_OS/400&amp;diff=1724"/>
		<updated>2026-05-17T19:05:17Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Weblinks */ more precise&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|Complete with Links to all necessary Books.}}&lt;br /&gt;
Because of the &#039;&#039;uncommon&#039;&#039; file handling, name length and character constraints, porting is already a mostly manual task.&amp;lt;ref&amp;gt;It&#039;s possible to use stream files in IFS as compiler input, but compiled objects have to be put into a &#039;&#039;QSYS.LIB&#039;&#039;, library. So, the file name restrictions apply anyway. The line length problem is mostly gone, though.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most often, the real challenge is to manually put together a &#039;&#039;config.h&#039;&#039; file. Since there&#039;s no capable UNIX shell environment, &amp;lt;code&amp;gt;./configure&amp;lt;/code&amp;gt; is no option.&amp;lt;ref&amp;gt;With V4R5, IBM claims to have implemented the C90 standard in Compiler and C-Library. I did not yet find a readymade &#039;&#039;config.h&#039;&#039; with all statements needed for a C90 environment.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are definitions for integers, being used often. This can be put e.&amp;amp;thinsp;g. into a separate header file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef __stdint_h&lt;br /&gt;
typedef unsigned long long int uint64_t;&lt;br /&gt;
typedef unsigned int uint32_t;&lt;br /&gt;
typedef unsigned short int uint16_t;&lt;br /&gt;
typedef unsigned char uint8_t;&lt;br /&gt;
typedef long long int int64_t;&lt;br /&gt;
typedef int int32_t;&lt;br /&gt;
typedef short int int16_t;&lt;br /&gt;
typedef char int8_t;&lt;br /&gt;
#define __stdint_h 1&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; The IMPI (CISC) C compiler in V3R2 and earlier doesn&#039;t know &amp;lt;tt&amp;gt;long long&amp;lt;/tt&amp;gt;, it&#039;s 32 bits only.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparations for QSYS.LIB ==&lt;br /&gt;
Preparations are mostly done on UNIX/Linux side. This is required to make the older V4R5 compiler happy. Newer compilers might be more forgiving.&lt;br /&gt;
&lt;br /&gt;
# Convert to native line endings for your platform, if the source files don&#039;t match.&lt;br /&gt;
# Convert Tabs to spaces:&amp;lt;ref&amp;gt;Tabs appear in SEU as only one blank. This makes source indentation hardly visible.&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;for FILE in *.c *.h; do cp ${FILE} ${FILE}~; expand -i -t4 &amp;lt; ${FILE}~ &amp;gt; ${FILE}; done&amp;lt;/code&amp;gt;&lt;br /&gt;
# Find out longest line in all C- and H-Files.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;wc -L *.c |sort -rn |head&amp;lt;/code&amp;gt;&lt;br /&gt;
# Eliminate too long lines by wrapping. This is easily done with &amp;lt;code&amp;gt;set colorcolumn=80&amp;lt;/code&amp;gt; in &#039;&#039;vim&#039;&#039;, and scrolling through the files with a wide window. &amp;lt;ref&amp;gt;Wider than 80 chars, that is.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Find C++-style comments and convert to proper C comments.&lt;br /&gt;
# Find function definitions which should be inlined, remove the word &amp;quot;inline&amp;quot; from the definition, and add a hint for the preprocessor/compiler that a function should be inlined before the function definition: &amp;lt;code&amp;gt;#pragma inline (&#039;&#039;functionname&#039;&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Find and remove text following &amp;lt;code&amp;gt;#endif&amp;lt;/code&amp;gt; preprocessor statements in the same line (thought as comment).&lt;br /&gt;
# Create (at least) &#039;&#039;&#039;two&#039;&#039;&#039; appropriate SRCPF with matching maximum line lengths through the RCDLEN parameter for CRTSRCPF:&lt;br /&gt;
## One (or more) for C-Files (&#039;&#039;may&#039;&#039; be named &#039;&#039;QCSRC&#039;&#039;),&amp;lt;ref&amp;gt;It could be clever to create one PF per subdirectory.&amp;lt;/ref&amp;gt;&lt;br /&gt;
## One for H-Files (&#039;&#039;&#039;must&#039;&#039;&#039; be named &#039;&#039;H&#039;&#039;).&lt;br /&gt;
# Upload.&lt;br /&gt;
## If the file names are already shorter than 10 Characters (excluding file extension), just upload to a SRC PF:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;for FILE in *.c; do echo -n &amp;quot;put ${FILE} MYLIB/QCSRC.&amp;quot;; basename ${FILE} .c; done |ftp as400&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;Automatic login and switching to ASCII mode is done though a &#039;&#039;~/.netrc&#039;&#039;-file.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;FTP ASCII takes care to convert ASCII to EBCDIC.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
## If the file names are longer, you&#039;ll have considerable fun to come up with shorter names. Possibly &#039;&#039;grep&#039;&#039; through, and replace names in all text files if you needed to shorten a &#039;&#039;.h&#039;&#039; name. Finally, put together a text file with appropriate &#039;&#039;put&#039;&#039; commands, and hope for the best.&lt;br /&gt;
# Change file type to &#039;&#039;C&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;for FILE in *.c; do echo &amp;quot;quote rcmd CHGPFM FILE(MYLIB/QCSRC) MBR($(basename ${FILE} .c)) SRCTYPE(C)&amp;quot;; done |ftp as400&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;This is a good example how to exploit the ftp server&#039;s ability to call CL commands as a replacement for &#039;&#039;rcmd&#039;&#039;.&amp;lt;/ref&amp;gt; Note: You&#039;ll need to do this for header files, also!&lt;br /&gt;
&lt;br /&gt;
The precompiler searches private includes in &#039;&#039;*LIBL/H&#039;&#039;, without the &#039;&#039;.h&#039;&#039;-Extension.&lt;br /&gt;
&lt;br /&gt;
== Compile Cycle ==&lt;br /&gt;
Compile object files as follows:&lt;br /&gt;
 CRTCMOD MODULE(MYLIB/MAIN) SRCFILE(MYLIB/QCSRC) DEFINE(DEF1 DEF2=1) OPTION(*LOGMSG) OUTPUT(*PRINT)&lt;br /&gt;
* Add &amp;lt;code&amp;gt;SYSIFCOPT(*IFSIO *IFS64IO)&amp;lt;/code&amp;gt; to the compiler parameters if the code contains &amp;lt;code&amp;gt;fopen()&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
* If you added &amp;lt;code&amp;gt;#pragma inline (&#039;&#039;functionname&#039;&#039;)&amp;lt;/code&amp;gt; to the code, add &amp;lt;code&amp;gt;INLINE(*ON)&amp;lt;/code&amp;gt; to the compiler parameters&lt;br /&gt;
&lt;br /&gt;
If compilation fails, output will go into a spooled file in the configured output queue. This is the most tedious task.&lt;br /&gt;
# Compile,&lt;br /&gt;
# check output,&lt;br /&gt;
# fix problems,&lt;br /&gt;
# &amp;lt;code&amp;gt;goto 1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If all object modules have been created, you can then link them to a &#039;&#039;*PGM&#039;&#039; object as follows:&lt;br /&gt;
 CRTPGM PGM(MYLIB/MYPG) MODULE(MYLIB/*ALL) ENTMOD(*PGM) ACTGRP(*NEW) DETAIL(*BASIC)&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://github.com/greenfive/as400_c/ AS/400 C] programming related files, especially &#039;&#039;stdint.h&#039;&#039;, GitHub&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Porting_C-Source_to_OS/400&amp;diff=1723</id>
		<title>Porting C-Source to OS/400</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Porting_C-Source_to_OS/400&amp;diff=1723"/>
		<updated>2026-05-17T19:04:55Z</updated>

		<summary type="html">&lt;p&gt;PoC: +link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|Complete with Links to all necessary Books.}}&lt;br /&gt;
Because of the &#039;&#039;uncommon&#039;&#039; file handling, name length and character constraints, porting is already a mostly manual task.&amp;lt;ref&amp;gt;It&#039;s possible to use stream files in IFS as compiler input, but compiled objects have to be put into a &#039;&#039;QSYS.LIB&#039;&#039;, library. So, the file name restrictions apply anyway. The line length problem is mostly gone, though.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most often, the real challenge is to manually put together a &#039;&#039;config.h&#039;&#039; file. Since there&#039;s no capable UNIX shell environment, &amp;lt;code&amp;gt;./configure&amp;lt;/code&amp;gt; is no option.&amp;lt;ref&amp;gt;With V4R5, IBM claims to have implemented the C90 standard in Compiler and C-Library. I did not yet find a readymade &#039;&#039;config.h&#039;&#039; with all statements needed for a C90 environment.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are definitions for integers, being used often. This can be put e.&amp;amp;thinsp;g. into a separate header file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef __stdint_h&lt;br /&gt;
typedef unsigned long long int uint64_t;&lt;br /&gt;
typedef unsigned int uint32_t;&lt;br /&gt;
typedef unsigned short int uint16_t;&lt;br /&gt;
typedef unsigned char uint8_t;&lt;br /&gt;
typedef long long int int64_t;&lt;br /&gt;
typedef int int32_t;&lt;br /&gt;
typedef short int int16_t;&lt;br /&gt;
typedef char int8_t;&lt;br /&gt;
#define __stdint_h 1&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; The IMPI (CISC) C compiler in V3R2 and earlier doesn&#039;t know &amp;lt;tt&amp;gt;long long&amp;lt;/tt&amp;gt;, it&#039;s 32 bits only.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparations for QSYS.LIB ==&lt;br /&gt;
Preparations are mostly done on UNIX/Linux side. This is required to make the older V4R5 compiler happy. Newer compilers might be more forgiving.&lt;br /&gt;
&lt;br /&gt;
# Convert to native line endings for your platform, if the source files don&#039;t match.&lt;br /&gt;
# Convert Tabs to spaces:&amp;lt;ref&amp;gt;Tabs appear in SEU as only one blank. This makes source indentation hardly visible.&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;for FILE in *.c *.h; do cp ${FILE} ${FILE}~; expand -i -t4 &amp;lt; ${FILE}~ &amp;gt; ${FILE}; done&amp;lt;/code&amp;gt;&lt;br /&gt;
# Find out longest line in all C- and H-Files.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;wc -L *.c |sort -rn |head&amp;lt;/code&amp;gt;&lt;br /&gt;
# Eliminate too long lines by wrapping. This is easily done with &amp;lt;code&amp;gt;set colorcolumn=80&amp;lt;/code&amp;gt; in &#039;&#039;vim&#039;&#039;, and scrolling through the files with a wide window. &amp;lt;ref&amp;gt;Wider than 80 chars, that is.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Find C++-style comments and convert to proper C comments.&lt;br /&gt;
# Find function definitions which should be inlined, remove the word &amp;quot;inline&amp;quot; from the definition, and add a hint for the preprocessor/compiler that a function should be inlined before the function definition: &amp;lt;code&amp;gt;#pragma inline (&#039;&#039;functionname&#039;&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Find and remove text following &amp;lt;code&amp;gt;#endif&amp;lt;/code&amp;gt; preprocessor statements in the same line (thought as comment).&lt;br /&gt;
# Create (at least) &#039;&#039;&#039;two&#039;&#039;&#039; appropriate SRCPF with matching maximum line lengths through the RCDLEN parameter for CRTSRCPF:&lt;br /&gt;
## One (or more) for C-Files (&#039;&#039;may&#039;&#039; be named &#039;&#039;QCSRC&#039;&#039;),&amp;lt;ref&amp;gt;It could be clever to create one PF per subdirectory.&amp;lt;/ref&amp;gt;&lt;br /&gt;
## One for H-Files (&#039;&#039;&#039;must&#039;&#039;&#039; be named &#039;&#039;H&#039;&#039;).&lt;br /&gt;
# Upload.&lt;br /&gt;
## If the file names are already shorter than 10 Characters (excluding file extension), just upload to a SRC PF:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;for FILE in *.c; do echo -n &amp;quot;put ${FILE} MYLIB/QCSRC.&amp;quot;; basename ${FILE} .c; done |ftp as400&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;Automatic login and switching to ASCII mode is done though a &#039;&#039;~/.netrc&#039;&#039;-file.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;FTP ASCII takes care to convert ASCII to EBCDIC.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
## If the file names are longer, you&#039;ll have considerable fun to come up with shorter names. Possibly &#039;&#039;grep&#039;&#039; through, and replace names in all text files if you needed to shorten a &#039;&#039;.h&#039;&#039; name. Finally, put together a text file with appropriate &#039;&#039;put&#039;&#039; commands, and hope for the best.&lt;br /&gt;
# Change file type to &#039;&#039;C&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;for FILE in *.c; do echo &amp;quot;quote rcmd CHGPFM FILE(MYLIB/QCSRC) MBR($(basename ${FILE} .c)) SRCTYPE(C)&amp;quot;; done |ftp as400&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;This is a good example how to exploit the ftp server&#039;s ability to call CL commands as a replacement for &#039;&#039;rcmd&#039;&#039;.&amp;lt;/ref&amp;gt; Note: You&#039;ll need to do this for header files, also!&lt;br /&gt;
&lt;br /&gt;
The precompiler searches private includes in &#039;&#039;*LIBL/H&#039;&#039;, without the &#039;&#039;.h&#039;&#039;-Extension.&lt;br /&gt;
&lt;br /&gt;
== Compile Cycle ==&lt;br /&gt;
Compile object files as follows:&lt;br /&gt;
 CRTCMOD MODULE(MYLIB/MAIN) SRCFILE(MYLIB/QCSRC) DEFINE(DEF1 DEF2=1) OPTION(*LOGMSG) OUTPUT(*PRINT)&lt;br /&gt;
* Add &amp;lt;code&amp;gt;SYSIFCOPT(*IFSIO *IFS64IO)&amp;lt;/code&amp;gt; to the compiler parameters if the code contains &amp;lt;code&amp;gt;fopen()&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
* If you added &amp;lt;code&amp;gt;#pragma inline (&#039;&#039;functionname&#039;&#039;)&amp;lt;/code&amp;gt; to the code, add &amp;lt;code&amp;gt;INLINE(*ON)&amp;lt;/code&amp;gt; to the compiler parameters&lt;br /&gt;
&lt;br /&gt;
If compilation fails, output will go into a spooled file in the configured output queue. This is the most tedious task.&lt;br /&gt;
# Compile,&lt;br /&gt;
# check output,&lt;br /&gt;
# fix problems,&lt;br /&gt;
# &amp;lt;code&amp;gt;goto 1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If all object modules have been created, you can then link them to a &#039;&#039;*PGM&#039;&#039; object as follows:&lt;br /&gt;
 CRTPGM PGM(MYLIB/MYPG) MODULE(MYLIB/*ALL) ENTMOD(*PGM) ACTGRP(*NEW) DETAIL(*BASIC)&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://github.com/greenfive/as400_c/ AS/400 C] programming related files, especially &#039;&#039;stdint.h&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Porting_C-Source_to_OS/400&amp;diff=1722</id>
		<title>Porting C-Source to OS/400</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Porting_C-Source_to_OS/400&amp;diff=1722"/>
		<updated>2026-05-10T23:38:44Z</updated>

		<summary type="html">&lt;p&gt;PoC: More types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|Complete with Links to all necessary Books.}}&lt;br /&gt;
Because of the &#039;&#039;uncommon&#039;&#039; file handling, name length and character constraints, porting is already a mostly manual task.&amp;lt;ref&amp;gt;It&#039;s possible to use stream files in IFS as compiler input, but compiled objects have to be put into a &#039;&#039;QSYS.LIB&#039;&#039;, library. So, the file name restrictions apply anyway. The line length problem is mostly gone, though.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most often, the real challenge is to manually put together a &#039;&#039;config.h&#039;&#039; file. Since there&#039;s no capable UNIX shell environment, &amp;lt;code&amp;gt;./configure&amp;lt;/code&amp;gt; is no option.&amp;lt;ref&amp;gt;With V4R5, IBM claims to have implemented the C90 standard in Compiler and C-Library. I did not yet find a readymade &#039;&#039;config.h&#039;&#039; with all statements needed for a C90 environment.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are definitions for integers, being used often. This can be put e.&amp;amp;thinsp;g. into a separate header file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef __stdint_h&lt;br /&gt;
typedef unsigned long long int uint64_t;&lt;br /&gt;
typedef unsigned int uint32_t;&lt;br /&gt;
typedef unsigned short int uint16_t;&lt;br /&gt;
typedef unsigned char uint8_t;&lt;br /&gt;
typedef long long int int64_t;&lt;br /&gt;
typedef int int32_t;&lt;br /&gt;
typedef short int int16_t;&lt;br /&gt;
typedef char int8_t;&lt;br /&gt;
#define __stdint_h 1&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; The IMPI (CISC) C compiler in V3R2 and earlier doesn&#039;t know &amp;lt;tt&amp;gt;long long&amp;lt;/tt&amp;gt;, it&#039;s 32 bits only.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparations for QSYS.LIB ==&lt;br /&gt;
Preparations are mostly done on UNIX/Linux side. This is required to make the older V4R5 compiler happy. Newer compilers might be more forgiving.&lt;br /&gt;
&lt;br /&gt;
# Convert to native line endings for your platform, if the source files don&#039;t match.&lt;br /&gt;
# Convert Tabs to spaces:&amp;lt;ref&amp;gt;Tabs appear in SEU as only one blank. This makes source indentation hardly visible.&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;for FILE in *.c *.h; do cp ${FILE} ${FILE}~; expand -i -t4 &amp;lt; ${FILE}~ &amp;gt; ${FILE}; done&amp;lt;/code&amp;gt;&lt;br /&gt;
# Find out longest line in all C- and H-Files.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;wc -L *.c |sort -rn |head&amp;lt;/code&amp;gt;&lt;br /&gt;
# Eliminate too long lines by wrapping. This is easily done with &amp;lt;code&amp;gt;set colorcolumn=80&amp;lt;/code&amp;gt; in &#039;&#039;vim&#039;&#039;, and scrolling through the files with a wide window. &amp;lt;ref&amp;gt;Wider than 80 chars, that is.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Find C++-style comments and convert to proper C comments.&lt;br /&gt;
# Find function definitions which should be inlined, remove the word &amp;quot;inline&amp;quot; from the definition, and add a hint for the preprocessor/compiler that a function should be inlined before the function definition: &amp;lt;code&amp;gt;#pragma inline (&#039;&#039;functionname&#039;&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Find and remove text following &amp;lt;code&amp;gt;#endif&amp;lt;/code&amp;gt; preprocessor statements in the same line (thought as comment).&lt;br /&gt;
# Create (at least) &#039;&#039;&#039;two&#039;&#039;&#039; appropriate SRCPF with matching maximum line lengths through the RCDLEN parameter for CRTSRCPF:&lt;br /&gt;
## One (or more) for C-Files (&#039;&#039;may&#039;&#039; be named &#039;&#039;QCSRC&#039;&#039;),&amp;lt;ref&amp;gt;It could be clever to create one PF per subdirectory.&amp;lt;/ref&amp;gt;&lt;br /&gt;
## One for H-Files (&#039;&#039;&#039;must&#039;&#039;&#039; be named &#039;&#039;H&#039;&#039;).&lt;br /&gt;
# Upload.&lt;br /&gt;
## If the file names are already shorter than 10 Characters (excluding file extension), just upload to a SRC PF:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;for FILE in *.c; do echo -n &amp;quot;put ${FILE} MYLIB/QCSRC.&amp;quot;; basename ${FILE} .c; done |ftp as400&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;Automatic login and switching to ASCII mode is done though a &#039;&#039;~/.netrc&#039;&#039;-file.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;FTP ASCII takes care to convert ASCII to EBCDIC.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
## If the file names are longer, you&#039;ll have considerable fun to come up with shorter names. Possibly &#039;&#039;grep&#039;&#039; through, and replace names in all text files if you needed to shorten a &#039;&#039;.h&#039;&#039; name. Finally, put together a text file with appropriate &#039;&#039;put&#039;&#039; commands, and hope for the best.&lt;br /&gt;
# Change file type to &#039;&#039;C&#039;&#039;:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;for FILE in *.c; do echo &amp;quot;quote rcmd CHGPFM FILE(MYLIB/QCSRC) MBR($(basename ${FILE} .c)) SRCTYPE(C)&amp;quot;; done |ftp as400&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;This is a good example how to exploit the ftp server&#039;s ability to call CL commands as a replacement for &#039;&#039;rcmd&#039;&#039;.&amp;lt;/ref&amp;gt; Note: You&#039;ll need to do this for header files, also!&lt;br /&gt;
&lt;br /&gt;
The precompiler searches private includes in &#039;&#039;*LIBL/H&#039;&#039;, without the &#039;&#039;.h&#039;&#039;-Extension.&lt;br /&gt;
&lt;br /&gt;
== Compile Cycle ==&lt;br /&gt;
Compile object files as follows:&lt;br /&gt;
 CRTCMOD MODULE(MYLIB/MAIN) SRCFILE(MYLIB/QCSRC) DEFINE(DEF1 DEF2=1) OPTION(*LOGMSG) OUTPUT(*PRINT)&lt;br /&gt;
* Add &amp;lt;code&amp;gt;SYSIFCOPT(*IFSIO *IFS64IO)&amp;lt;/code&amp;gt; to the compiler parameters if the code contains &amp;lt;code&amp;gt;fopen()&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
* If you added &amp;lt;code&amp;gt;#pragma inline (&#039;&#039;functionname&#039;&#039;)&amp;lt;/code&amp;gt; to the code, add &amp;lt;code&amp;gt;INLINE(*ON)&amp;lt;/code&amp;gt; to the compiler parameters&lt;br /&gt;
&lt;br /&gt;
If compilation fails, output will go into a spooled file in the configured output queue. This is the most tedious task.&lt;br /&gt;
# Compile,&lt;br /&gt;
# check output,&lt;br /&gt;
# fix problems,&lt;br /&gt;
# &amp;lt;code&amp;gt;goto 1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If all object modules have been created, you can then link them to a &#039;&#039;*PGM&#039;&#039; object as follows:&lt;br /&gt;
 CRTPGM PGM(MYLIB/MYPG) MODULE(MYLIB/*ALL) ENTMOD(*PGM) ACTGRP(*NEW) DETAIL(*BASIC)&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1721</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1721"/>
		<updated>2026-05-10T21:45:11Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Message handling table */ More info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Program error&#039;&#039; message (CEE9901) is shown in the message line&amp;lt;ref&amp;gt;In fact, the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call is shown, CEE9901 appears in the second level text.&amp;lt;/ref&amp;gt;, message text is only put into the job log&lt;br /&gt;
|Message text is put into the spool file log, followed by &#039;&#039;program error&#039;&#039; message (CEE9901)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line, and put into the job log, followed by &#039;&#039;program error&#039;&#039; message with the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call&lt;br /&gt;
|Message is put into the spool file, sev 40, followed by CPC2402: &#039;&#039;Job ended. Cancel message received at command processor.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;, and put into the job log&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Batch results were checked with &amp;lt;code&amp;gt;sbmjob cmd(call pgm(myqmhsndpm)) job(myqmhsndpm) log(4 0 *seclvl) logclpgm(*yes)&lt;br /&gt;
&amp;lt;/code&amp;gt;, to force a job log in any case.&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1720</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1720"/>
		<updated>2026-05-10T21:21:09Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Message handling table */ Expanded with *escape&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Program error&#039;&#039; message (CEE9901) is shown in the message line&amp;lt;ref&amp;gt;In fact, the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call is shown, CEE9901 appears in the second level text.&amp;lt;/ref&amp;gt;, message text is only put into the job log&lt;br /&gt;
|Message text is put into the spool file log, followed by &#039;&#039;program error&#039;&#039; message (CEE9901)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line, and put into the job log, followed by &#039;&#039;program error&#039;&#039; message with the CPF number being used in the &#039;&#039;QMHSNDPM&#039;&#039;-call&lt;br /&gt;
|Message is put into the spool file, sev 40, followed by CPC2402: &#039;&#039;Job ended. Cancel message received at command processor.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;5&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;, and put into the job log&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*ESCAPE&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1719</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1719"/>
		<updated>2026-05-10T20:56:21Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Message handling table */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;4&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;4&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;4&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1718</id>
		<title>User:PoC</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=User:PoC&amp;diff=1718"/>
		<updated>2026-05-10T20:52:52Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Footnotes */ Added notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am the principal maintainer of this Wiki.&lt;br /&gt;
&lt;br /&gt;
== Missing ==&lt;br /&gt;
This is a list of things I search for:&lt;br /&gt;
* COBOL LPPs for V3R2 in ENU (2924)&lt;br /&gt;
* Secondary Language Media German (2929) for V4R5&lt;br /&gt;
* The LPP for the IBM Gopher server and 5250 based client (https://es.wikipedia.org/wiki/Gopher)&lt;br /&gt;
* The LPPs for DAL (https://en.wikipedia.org/wiki/Data_Access_Language)&lt;br /&gt;
* The (non-cumulative) PTFs for OS/400 V2R3, bringing AppleTalk support to OS/400:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Before you configure your Apple Macintosh to connect over AppleTalk, you need to install the following PTFs on the AS/400:&lt;br /&gt;
&lt;br /&gt;
* MF06411                                                           &lt;br /&gt;
* MF06412                                                           &lt;br /&gt;
* SF14158                                                           &lt;br /&gt;
* SF14614                                                           &lt;br /&gt;
* MF06396                                                           &lt;br /&gt;
* MF06332                                                           &lt;br /&gt;
                                                                       &lt;br /&gt;
These PTFs will not be shipped in a cumulative package, and we advise that you check for any later PTFS that were released after publication of this book.&lt;br /&gt;
&lt;br /&gt;
Cited from Chapter 8 of &#039;&#039;Using Apple Macintosh with the AS/400&#039;&#039;, GG24-4071-00, March 1994.&lt;br /&gt;
----&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial Benchmarks ==&lt;br /&gt;
For getting a rough idea about CPU speed, I have a physical table about German ZIP codes, including long distance telephone prefixes, filled with nearly 20,000 records in six fields, summing up to 2.25&amp;amp;thinsp;MiB of data. From the original source in the internet, there were a lot of duplicate records. Birgitta Hauser came up with a quick and dirty idea how to eliminate these dupes.&amp;lt;ref&amp;gt;She admitted, &#039;&#039;it might be a bit slow&#039;&#039;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the SQL proved to be running really slow, I came up to use it as a benchmark. Of course, it&#039;s not 100&amp;amp;thinsp; fair, because of different OS releases and accompanying improvements in SQL handling. But it gives a rough idea.&lt;br /&gt;
&lt;br /&gt;
The SQL was run from a source PF member as standard batch job (default parameters) on idling machines (no additional work).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Machine&lt;br /&gt;
!Proc. Feat.&lt;br /&gt;
!OS&lt;br /&gt;
!Runtime (ca.)&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|9401-150&lt;br /&gt;
|2270&lt;br /&gt;
|V4R5&lt;br /&gt;
|About 118 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-S20&lt;br /&gt;
|2161&lt;br /&gt;
|V4R4&lt;br /&gt;
|About 13.5 hrs.&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9406-800&lt;br /&gt;
|7408&lt;br /&gt;
|V5R2&lt;br /&gt;
|About 2 hrs.&lt;br /&gt;
|&amp;amp;thinsp;&lt;br /&gt;
|-&lt;br /&gt;
|8203-E4A&lt;br /&gt;
|5587&lt;br /&gt;
|V7R2&lt;br /&gt;
|1-2 Minutes&lt;br /&gt;
|LPAR with two CPU cores assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Used files ===&lt;br /&gt;
* DDS for the database as follows:&lt;br /&gt;
 A                                      UNIQUE&lt;br /&gt;
 A          R PLZTBL&lt;br /&gt;
 A            ORT           32A&lt;br /&gt;
 A            LAND          17A&lt;br /&gt;
 A            VORWAHL        6A         ALWNULL&lt;br /&gt;
 A            PLZ            5A&lt;br /&gt;
 A            ID             5S 0&lt;br /&gt;
 A            ZUSATZ        30A         ALWNULL&lt;br /&gt;
 A          K ID&lt;br /&gt;
&lt;br /&gt;
* SQL for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 DELETE FROM PLZPF A&lt;br /&gt;
  WHERE A.ID = (&lt;br /&gt;
   SELECT MAX(ID) FROM PLZPF&lt;br /&gt;
    GROUP BY ORT, LAND, VORWAHL, PLZ, ZUSATZ&lt;br /&gt;
    HAVING COUNT(*) &amp;gt; 1 AND MAX(ID) = A.ID)&lt;br /&gt;
&lt;br /&gt;
* Submit Command for &#039;&#039;RUNSQLSTM&#039;&#039; as follows:&lt;br /&gt;
 SBMJOB JOB(DLTPLZDUPS) CMD(RUNSQLSTM SRCFILE(PLZ/SOURCES) SRCMBR(DLTDUPS) COMMIT(*NONE) NAMING(*SQL) DFTRDBCOL(PLZ))&lt;br /&gt;
&lt;br /&gt;
I can provide a save file of the whole library on request.&lt;br /&gt;
&lt;br /&gt;
The switchback to the traditional CQE SQL Engine involves creating a copy of &#039;&#039;QSYS/QAQQINI&#039;&#039;, updating this copy through SQL, SQE_NATIVE_ACCESS.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/createqaqqini.htm Creating a QAQQINI File]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/specifyqaqqini.htm Change Query Attributes for using the desired QAQQINI file]&lt;br /&gt;
* [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajq/rzajqqaqqiniformat.htm QAQQINI File Format]&lt;br /&gt;
&lt;br /&gt;
== Message handling table ==&lt;br /&gt;
This is related to the [https://www.ibm.com/docs/en/i/7.4.0?topic=ssw_ibm_i_74/apis/QMHSNDPM.html QMHSNDPM] API.&lt;br /&gt;
&lt;br /&gt;
When trying out these things, it&#039;s important to have some calls to &amp;lt;code&amp;gt;sleep()&amp;lt;/code&amp;gt; in the application, so the 5250 display  logic does not merge away the brief write request.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Type&lt;br /&gt;
!valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Destination&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Result&lt;br /&gt;
|-&lt;br /&gt;
!Interactive&lt;br /&gt;
!Batch&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;4&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter v0&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;4&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*PGMBDY&amp;lt;/tt&amp;gt;&#039;&#039;&#039;,&amp;lt;br&amp;gt;Call Stack Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the job log, and shown in the message line&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|No result&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*DIAG&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;4&amp;quot;|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*EXT&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is put into the job log&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; rowspan=&amp;quot;2&amp;quot;|Message is put into the spool file, sev 40&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*INFO&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in a separate screen, like RPG&#039;s &amp;lt;code&amp;gt;DSPLY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*STATUS&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|Message is shown in the Message Line&lt;br /&gt;
|No result&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&amp;lt;tt&amp;gt;*COMP&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|No result&lt;br /&gt;
|Message is put into the spool file, sev 40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Access_OS/390_DB2_database_tables_from_OS/400_over_SNA/APPN&amp;diff=1717</id>
		<title>Access OS/390 DB2 database tables from OS/400 over SNA/APPN</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Access_OS/390_DB2_database_tables_from_OS/400_over_SNA/APPN&amp;diff=1717"/>
		<updated>2026-05-10T18:08:49Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* WTO: Dispatch Priorities not in Sync */ Syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|Solve and document outstanding headscratchers}}&lt;br /&gt;
This is a short writeup of how to &#039;&#039;&#039;access OS/390 DB2 database tables from OS/400 over SNA/APPN&#039;&#039;&#039;. A mandatory requirement is an already established SNA/APPN configuration.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This article assumes OS/390 ADCD 2.10 being used.&lt;br /&gt;
&lt;br /&gt;
== Setup OS/390 IPL parameters ==&lt;br /&gt;
Change the configuration parameter: &amp;lt;code&amp;gt;LOADPARM 0A822C..&amp;lt;/code&amp;gt; and IPL for an initial cold start handler of DB2.&lt;br /&gt;
&lt;br /&gt;
Subsequent IPLs should use &amp;lt;code&amp;gt;LOADPARM 0A822W..&amp;lt;/code&amp;gt; to use the quicker warm start facility.&lt;br /&gt;
&lt;br /&gt;
DB2 parameters are left at default, because we don&#039;t know (yet) how to change them.&lt;br /&gt;
&lt;br /&gt;
=== Startup summary on OS/390 console ===&lt;br /&gt;
This is where I gleaned interesting APPN values.&lt;br /&gt;
 - 17.05.53 STC00017  DSNL004I - DDF START COMPLETE&lt;br /&gt;
 -            LOCATION  S390LOC&lt;br /&gt;
 -            LU        P390LU&lt;br /&gt;
 -            GENERICLU -NONE&lt;br /&gt;
 -            DOMAIN    -NONE&lt;br /&gt;
 -            TCPPORT   446&lt;br /&gt;
 -            RESPORT   5020&lt;br /&gt;
 - 17.05.53 STC00017  DSN9022I - DSNYASCP &#039;START DB2&#039; NORMAL COMPLETION&lt;br /&gt;
 - 17.05.53 STC00024  +DSNX964I DSNX9STP THE DB2-ESTABLISHED STORED&lt;br /&gt;
 -  PROCEDURES ADDRESS SPACE&lt;br /&gt;
 -  FOR SUBSYSTEM DSN1 IS STARTED&lt;br /&gt;
&lt;br /&gt;
* S390LOC is (also) the default database name,&lt;br /&gt;
* P390LU is the network entity (LUname) name we must connect to.&lt;br /&gt;
&lt;br /&gt;
==== WTO: Dispatch Priorities not in Sync ====&lt;br /&gt;
In the default installation of OS/390 2.10 ADCD, you might be presented with this console message:&lt;br /&gt;
 *17.05.41 STC00017 *DSNT405E - DSNTLIDE DISPATCH PRIORITIES NOT IN SYNC:&lt;br /&gt;
 * IRLM    : 0020 COMPARED TO DB2     : 0021&lt;br /&gt;
&lt;br /&gt;
The following edits need to be made:&lt;br /&gt;
* to &amp;lt;tt&amp;gt;sys1.adcd10.parmlib(ieaics00)&amp;lt;/tt&amp;gt;, insert the following lines before the &#039;&#039;SUBSYS=CICS&#039;&#039; line:&lt;br /&gt;
 TRXNAME=DB2,PGN=12                  /* DB2                         */&lt;br /&gt;
 TRXNAME=DSN1MSTR,PGN=12&lt;br /&gt;
 TRXNAME=DSN1DIST,PGN=12&lt;br /&gt;
 TRXNAME=DSN1SPAS,PGN=12&lt;br /&gt;
 TRXNAME=DB2IRLM,PGN=13&lt;br /&gt;
&lt;br /&gt;
* to sys1.adcd10.parmlib(ieaips00) insert the following lines after the &#039;&#039;PGN=3,&#039;&#039; line:&lt;br /&gt;
 PGN=12,(DMN=5,DP=F2)                          /* DB2           */       &lt;br /&gt;
 PGN=13,(DMN=5,DP=F4)                          /* DB2 IRLM      */      &lt;br /&gt;
&lt;br /&gt;
Re-IPL, and the message will be gone.&lt;br /&gt;
&lt;br /&gt;
== Use interactive SQL ==&lt;br /&gt;
To get ISPF menus related to DB, use &amp;lt;code&amp;gt;DBSPROC&amp;lt;/code&amp;gt; instead of default &amp;lt;code&amp;gt;ISPFPROC&amp;lt;/code&amp;gt; as logon proc at logon time.&lt;br /&gt;
&lt;br /&gt;
The interactive SQL facility can be reached:&lt;br /&gt;
* Type &amp;lt;code&amp;gt;M.15&amp;lt;/code&amp;gt; from the ISPF main menu,&lt;br /&gt;
* Type &amp;lt;code&amp;gt;2.1&amp;lt;/code&amp;gt; in the subsequent *DB2 Administration Menu*.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, this can&#039;t be done in one go.&lt;br /&gt;
&lt;br /&gt;
Below the &#039;&#039;SQL statement:&#039;&#039; line on the appearing screen, SQL commands can be entered. Example:&lt;br /&gt;
* &amp;lt;code&amp;gt;CREATE DATABASE foobar&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CREATE TABLE foobar.testtbl (id char(24))&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;INSERT INTO foobar.testtbl VALUES (&#039;barbaz&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;SELECT * FROM foobar.testtbl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retrieving information about available databases ==&lt;br /&gt;
The tool is named DB2I. You can reach it from ISPF main menu:&lt;br /&gt;
* Type &amp;lt;code&amp;gt;M.13&amp;lt;/code&amp;gt; in ISPF,&lt;br /&gt;
* Type &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; into the the subsequent &#039;&#039;DB2I PRIMARY OPTION MENU&#039;&#039;&#039;s command line,&lt;br /&gt;
* Change &amp;lt;code&amp;gt;DB2 NAME&amp;lt;/code&amp;gt; to be &#039;&#039;DSN1&#039;&#039;,&lt;br /&gt;
* Press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; twice,&lt;br /&gt;
* Type &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; in the subsequent &#039;&#039;DB2I PRIMARY OPTION MENU&#039;&#039;,&lt;br /&gt;
* Choose any predefined &#039;&#039;Cmd x&#039;&#039; line, and enter:&lt;br /&gt;
 -DISPLAY DATABASE(*) LIMIT(1000)&lt;br /&gt;
* Adjust &#039;&#039;LIMIT&#039;&#039; as needed,&lt;br /&gt;
* Press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to see a list of defined databases.&lt;br /&gt;
&lt;br /&gt;
Output shows &#039;&#039;NO SPACES FOUND&#039;&#039; for our database from above. Do we need to create/assign separate table space first?&lt;br /&gt;
&lt;br /&gt;
== Remote connection from OS/400 ==&lt;br /&gt;
To access remote databases, an according entry in the remote database directory needs to be created.&lt;br /&gt;
 addrdbdire rdb(s390loc) rmtlocname(p390lu *sna) dev(p390lu) lcllocname(*netatr) rmtnetid(*netatr) mode(ibmrdb) text(&#039;Default DB2 instance on OS/390 ADCD&#039;)&lt;br /&gt;
OS/400 creates an according device description upon the first connection request.&lt;br /&gt;
&lt;br /&gt;
From &amp;lt;code&amp;gt;strsql&amp;lt;/code&amp;gt;, a remote connection can now be initiated:&lt;br /&gt;
 CONNECT TO S390LOC USER P390 USING &#039;P390&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Use your actual password for the P390 user.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the SQL prompt you can then issue the usual SQL commands, such as &#039;&#039;SELECT&#039;&#039;ing the record inserted above:&lt;br /&gt;
 SELECT * FROM foobar.testtbl&lt;br /&gt;
&lt;br /&gt;
== Further clarifications needed ==&lt;br /&gt;
* After inserting records from OS/400, and &#039;&#039;SELECT&#039;&#039;ing them in OS/390, the session hangs. A small window appears at bottom, stating &amp;lt;code&amp;gt;SQL cost=2&amp;lt;/code&amp;gt;. Pressing &amp;lt;code&amp;gt;PA1&amp;lt;/code&amp;gt; ends the session with the interactive SQL facility but doesn&#039;t resolve the issue.&lt;br /&gt;
** Apparently &#039;&#039;SQL cost&#039;&#039; is an estimate for the database management but not an actual error. Many operations in the DB2 Admin application seem to just hang until an eventual timeout with respective WTO output and messages on screen.&lt;br /&gt;
* Which parameters are needed for &amp;lt;code&amp;gt;crtddmf&amp;lt;/code&amp;gt; on OS/400 to access remote DB2 tables? Example (not working, need to clarify about possible &amp;lt;code&amp;gt;&#039;P390.DATABASE.FILE&#039;&amp;lt;/code&amp;gt;):&lt;br /&gt;
 crtddmf file(qgpl/p390db) rmtfile(*nonstd &#039;P390.DATABASE.FILE&#039;) rmtlocname(p390lu) dev(p390lu) lcllocname(*netatr) mode(ibmrdb) rmtnetid(*netatr)&lt;br /&gt;
** Further research indicates that there might not be a counterpart for DDM access in DB2, but a &#039;&#039;Distributed FileManager/MVS&#039;&#039; component for accessing files at the data set level.&lt;br /&gt;
* &#039;&#039;NO SPACES FOUND&#039;&#039;, see above. Possible clues:&lt;br /&gt;
** [https://www.ibm.com/docs/en/db2-for-zos/12?topic=messages-dsnt602i DSNT602I NO SPACES FOUND], Db2 for z/OS, IBM&lt;br /&gt;
** [http://www.ustools.sys.eds.com/usercomms/view.php?bn=usercommunications_interactives&amp;amp;key=1444666587 Usercomm - DB2 V10 Hold Data and Cover Letters for HP Release level AI00], search for &#039;&#039;UI22580 COVER LETTER START&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://github.com/SDL-Hercules-390/hyperion/blob/master/readme/README.SNA.md Hercules SNA support README], GitHub&lt;br /&gt;
* [https://www.ibm.com/resources/publications/OutputPubsDetails?PubID=SG24620400 S/390 Partners in Development: OS/390 (and z/OS) New Users Cookbook], SG24-6204-00&lt;br /&gt;
* [https://www.youtube.com/watch?v=D427APErjcc Mainframe DB2] (YouTube video) by racingmars&lt;br /&gt;
&lt;br /&gt;
[[Category: Software Configuration Guide]]‏&lt;br /&gt;
[[Category: System Administration‏‎]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Access_OS/390_DB2_database_tables_from_OS/400_over_SNA/APPN&amp;diff=1716</id>
		<title>Access OS/390 DB2 database tables from OS/400 over SNA/APPN</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Access_OS/390_DB2_database_tables_from_OS/400_over_SNA/APPN&amp;diff=1716"/>
		<updated>2026-05-08T20:00:45Z</updated>

		<summary type="html">&lt;p&gt;PoC: /* Startup summary on OS/390 console */ mishap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|Solve and document outstanding headscratchers}}&lt;br /&gt;
This is a short writeup of how to &#039;&#039;&#039;access OS/390 DB2 database tables from OS/400 over SNA/APPN&#039;&#039;&#039;. A mandatory requirement is an already established SNA/APPN configuration.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This article assumes OS/390 ADCD 2.10 being used.&lt;br /&gt;
&lt;br /&gt;
== Setup OS/390 IPL parameters ==&lt;br /&gt;
Change the configuration parameter: &amp;lt;code&amp;gt;LOADPARM 0A822C..&amp;lt;/code&amp;gt; and IPL for an initial cold start handler of DB2.&lt;br /&gt;
&lt;br /&gt;
Subsequent IPLs should use &amp;lt;code&amp;gt;LOADPARM 0A822W..&amp;lt;/code&amp;gt; to use the quicker warm start facility.&lt;br /&gt;
&lt;br /&gt;
DB2 parameters are left at default, because we don&#039;t know (yet) how to change them.&lt;br /&gt;
&lt;br /&gt;
=== Startup summary on OS/390 console ===&lt;br /&gt;
This is where I gleaned interesting APPN values.&lt;br /&gt;
 - 17.05.53 STC00017  DSNL004I - DDF START COMPLETE&lt;br /&gt;
 -            LOCATION  S390LOC&lt;br /&gt;
 -            LU        P390LU&lt;br /&gt;
 -            GENERICLU -NONE&lt;br /&gt;
 -            DOMAIN    -NONE&lt;br /&gt;
 -            TCPPORT   446&lt;br /&gt;
 -            RESPORT   5020&lt;br /&gt;
 - 17.05.53 STC00017  DSN9022I - DSNYASCP &#039;START DB2&#039; NORMAL COMPLETION&lt;br /&gt;
 - 17.05.53 STC00024  +DSNX964I DSNX9STP THE DB2-ESTABLISHED STORED&lt;br /&gt;
 -  PROCEDURES ADDRESS SPACE&lt;br /&gt;
 -  FOR SUBSYSTEM DSN1 IS STARTED&lt;br /&gt;
&lt;br /&gt;
* S390LOC is (also) the default database name,&lt;br /&gt;
* P390LU is the network entity (LUname) name we must connect to.&lt;br /&gt;
&lt;br /&gt;
==== WTO: Dispatch Priorities not in Sync ====&lt;br /&gt;
In the default installation of OS/390 2.10 ADCD, you might be presented with this console message:&lt;br /&gt;
 *17.05.41 STC00017 *DSNT405E - DSNTLIDE DISPATCH PRIORITIES NOT IN SYNC:&lt;br /&gt;
 * IRLM    : 0020 COMPARED TO DB2     : 0021&lt;br /&gt;
&lt;br /&gt;
The following edits need to be made.&lt;br /&gt;
&lt;br /&gt;
* to &amp;lt;tt&amp;gt;sys1.adcd10.parmlib(ieaics00)&amp;lt;/tt&amp;gt;, insert the following lines before the &#039;&#039;SUBSYS=CICS&#039;&#039; line:&lt;br /&gt;
 TRXNAME=DB2,PGN=12                  /* DB2                         */&lt;br /&gt;
 TRXNAME=DSN1MSTR,PGN=12&lt;br /&gt;
 TRXNAME=DSN1DIST,PGN=12&lt;br /&gt;
 TRXNAME=DSN1SPAS,PGN=12&lt;br /&gt;
 TRXNAME=DB2IRLM,PGN=13&lt;br /&gt;
&lt;br /&gt;
* to sys1.adcd10.parmlib(ieaips00) insert the following lines after the &#039;&#039;PGN=3,&#039;&#039; line:&lt;br /&gt;
 PGN=12,(DMN=5,DP=F2)                          /* DB2           */       &lt;br /&gt;
 PGN=13,(DMN=5,DP=F4)                          /* DB2 IRLM      */      &lt;br /&gt;
&lt;br /&gt;
Re-IPL, and the message will be gone.&lt;br /&gt;
&lt;br /&gt;
== Use interactive SQL ==&lt;br /&gt;
To get ISPF menus related to DB, use &amp;lt;code&amp;gt;DBSPROC&amp;lt;/code&amp;gt; instead of default &amp;lt;code&amp;gt;ISPFPROC&amp;lt;/code&amp;gt; as logon proc at logon time.&lt;br /&gt;
&lt;br /&gt;
The interactive SQL facility can be reached:&lt;br /&gt;
* Type &amp;lt;code&amp;gt;M.15&amp;lt;/code&amp;gt; from the ISPF main menu,&lt;br /&gt;
* Type &amp;lt;code&amp;gt;2.1&amp;lt;/code&amp;gt; in the subsequent *DB2 Administration Menu*.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, this can&#039;t be done in one go.&lt;br /&gt;
&lt;br /&gt;
Below the &#039;&#039;SQL statement:&#039;&#039; line on the appearing screen, SQL commands can be entered. Example:&lt;br /&gt;
* &amp;lt;code&amp;gt;CREATE DATABASE foobar&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CREATE TABLE foobar.testtbl (id char(24))&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;INSERT INTO foobar.testtbl VALUES (&#039;barbaz&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;SELECT * FROM foobar.testtbl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retrieving information about available databases ==&lt;br /&gt;
The tool is named DB2I. You can reach it from ISPF main menu:&lt;br /&gt;
* Type &amp;lt;code&amp;gt;M.13&amp;lt;/code&amp;gt; in ISPF,&lt;br /&gt;
* Type &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; into the the subsequent &#039;&#039;DB2I PRIMARY OPTION MENU&#039;&#039;&#039;s command line,&lt;br /&gt;
* Change &amp;lt;code&amp;gt;DB2 NAME&amp;lt;/code&amp;gt; to be &#039;&#039;DSN1&#039;&#039;,&lt;br /&gt;
* Press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; twice,&lt;br /&gt;
* Type &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; in the subsequent &#039;&#039;DB2I PRIMARY OPTION MENU&#039;&#039;,&lt;br /&gt;
* Choose any predefined &#039;&#039;Cmd x&#039;&#039; line, and enter:&lt;br /&gt;
 -DISPLAY DATABASE(*) LIMIT(1000)&lt;br /&gt;
* Adjust &#039;&#039;LIMIT&#039;&#039; as needed,&lt;br /&gt;
* Press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to see a list of defined databases.&lt;br /&gt;
&lt;br /&gt;
Output shows &#039;&#039;NO SPACES FOUND&#039;&#039; for our database from above. Do we need to create/assign separate table space first?&lt;br /&gt;
&lt;br /&gt;
== Remote connection from OS/400 ==&lt;br /&gt;
To access remote databases, an according entry in the remote database directory needs to be created.&lt;br /&gt;
 addrdbdire rdb(s390loc) rmtlocname(p390lu *sna) dev(p390lu) lcllocname(*netatr) rmtnetid(*netatr) mode(ibmrdb) text(&#039;Default DB2 instance on OS/390 ADCD&#039;)&lt;br /&gt;
OS/400 creates an according device description upon the first connection request.&lt;br /&gt;
&lt;br /&gt;
From &amp;lt;code&amp;gt;strsql&amp;lt;/code&amp;gt;, a remote connection can now be initiated:&lt;br /&gt;
 CONNECT TO S390LOC USER P390 USING &#039;P390&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Use your actual password for the P390 user.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the SQL prompt you can then issue the usual SQL commands, such as &#039;&#039;SELECT&#039;&#039;ing the record inserted above:&lt;br /&gt;
 SELECT * FROM foobar.testtbl&lt;br /&gt;
&lt;br /&gt;
== Further clarifications needed ==&lt;br /&gt;
* After inserting records from OS/400, and &#039;&#039;SELECT&#039;&#039;ing them in OS/390, the session hangs. A small window appears at bottom, stating &amp;lt;code&amp;gt;SQL cost=2&amp;lt;/code&amp;gt;. Pressing &amp;lt;code&amp;gt;PA1&amp;lt;/code&amp;gt; ends the session with the interactive SQL facility but doesn&#039;t resolve the issue.&lt;br /&gt;
** Apparently &#039;&#039;SQL cost&#039;&#039; is an estimate for the database management but not an actual error. Many operations in the DB2 Admin application seem to just hang until an eventual timeout with respective WTO output and messages on screen.&lt;br /&gt;
* Which parameters are needed for &amp;lt;code&amp;gt;crtddmf&amp;lt;/code&amp;gt; on OS/400 to access remote DB2 tables? Example (not working, need to clarify about possible &amp;lt;code&amp;gt;&#039;P390.DATABASE.FILE&#039;&amp;lt;/code&amp;gt;):&lt;br /&gt;
 crtddmf file(qgpl/p390db) rmtfile(*nonstd &#039;P390.DATABASE.FILE&#039;) rmtlocname(p390lu) dev(p390lu) lcllocname(*netatr) mode(ibmrdb) rmtnetid(*netatr)&lt;br /&gt;
** Further research indicates that there might not be a counterpart for DDM access in DB2, but a &#039;&#039;Distributed FileManager/MVS&#039;&#039; component for accessing files at the data set level.&lt;br /&gt;
* &#039;&#039;NO SPACES FOUND&#039;&#039;, see above. Possible clues:&lt;br /&gt;
** [https://www.ibm.com/docs/en/db2-for-zos/12?topic=messages-dsnt602i DSNT602I NO SPACES FOUND], Db2 for z/OS, IBM&lt;br /&gt;
** [http://www.ustools.sys.eds.com/usercomms/view.php?bn=usercommunications_interactives&amp;amp;key=1444666587 Usercomm - DB2 V10 Hold Data and Cover Letters for HP Release level AI00], search for &#039;&#039;UI22580 COVER LETTER START&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://github.com/SDL-Hercules-390/hyperion/blob/master/readme/README.SNA.md Hercules SNA support README], GitHub&lt;br /&gt;
* [https://www.ibm.com/resources/publications/OutputPubsDetails?PubID=SG24620400 S/390 Partners in Development: OS/390 (and z/OS) New Users Cookbook], SG24-6204-00&lt;br /&gt;
* [https://www.youtube.com/watch?v=D427APErjcc Mainframe DB2] (YouTube video) by racingmars&lt;br /&gt;
&lt;br /&gt;
[[Category: Software Configuration Guide]]‏&lt;br /&gt;
[[Category: System Administration‏‎]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
</feed>