 




<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Problems Deleting a file in IFS directory?</title>
	<atom:link href="http://itknowledgeexchange.techtarget.com/itanswers/problems-deleting-a-file-in-ifs-directory/feed/" rel="self" type="application/rss+xml" />
	<link>http://itknowledgeexchange.techtarget.com/itanswers/problems-deleting-a-file-in-ifs-directory/</link>
	<description></description>
	<lastBuildDate>Sat, 25 May 2013 23:02:16 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: tomliotta</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/problems-deleting-a-file-in-ifs-directory/#comment-82736</link>
		<dc:creator>tomliotta</dc:creator>
		<pubDate>Sun, 24 Oct 2010 04:13:07 +0000</pubDate>
		<guid isPermaLink="false">#comment-82736</guid>
		<description><![CDATA[&lt;i&gt;...you can use the Retrieve Object References (QP0LROR) API, or examine the objects properties using iSeries Navigator.
I do not know how to write code (Api&#039;s)&lt;/i&gt;

APIs are just programs or procedures, called the same ways that you call programs or procedures that you might write yourself. Documentation is standard among all similar APIs; so once you understand one, a bunch of others become meaningful.

The Info Center has examples of &lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fapiref%2FapiUse.htm&quot;&gt;Using APIs&lt;/a&gt;, and lots of examples are out on the internet. The section on &lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fapiref%2Fpgmerr.htm&quot;&gt;Common API programming errors&lt;/a&gt; covers almost everything you&#039;ll run into.

Here&#039;s a basic example for QP0LROR written in V5R3 CL:&lt;pre&gt;
pgm    ( +
         &amp;pPath       +
       )

   dcl   &amp;pPath       *char  128


   dcl   &amp;rcvvar      *char 1024     value( &#039; &#039; )
   dcl   &amp;lrcvvar     *uint
   dcl   &amp;path_t      *char  512     value( &#039; &#039; )
   dcl   &amp;CCSID       *char    4     value( x&#039;00000000&#039; )
   dcl   &amp;country     *char    2     value( x&#039;0000&#039; )
   dcl   &amp;lang        *char    3     value( x&#039;000000&#039; )
   dcl   &amp;pathtyp     *char    4     value( x&#039;00000000&#039; )
   dcl   &amp;path        *char  128
   dcl   &amp;lPath       *char    4     value( x&#039;00000000&#039; )
   dcl   &amp;LenPath     *dec (   5 0 ) value( 0 )
   dcl   &amp;rsv3        *char    3     value( x&#039;000000&#039; )
   dcl   &amp;rsv10       *char   10     value( x&#039;00000000000000000000&#039; )

   dcl   &amp;nRef        *dec (   5 0 ) value( 0 )
   dcl   &amp;oJobL       *dec (   5 0 ) value( 0 )
   dcl   &amp;dJobLE      *dec (   5 0 ) value( 0 )
   dcl   &amp;oJobLE      *dec (   5 0 ) value( 0 )
   dcl   &amp;qjob        *char   26     value( &#039; &#039; )

   dcl   &amp;x00         *char    4     value( x&#039;00000000&#039; )


/* Get the value away from the parm... */
   chgvar            &amp;path            &amp;pPath

/* Use this to determine length...     */
   rtvmsg     msgid( cpf9897 ) msgf( QSYS/QCPFMSG ) +
                msgdta( &amp;path )   +
                msglen( &amp;LenPath )

/* Set up the path.name structure...   */
   chgvar      %bin( &amp;lPath )         &amp;LenPath

   chgvar            &amp;path_t        ( +
                                      &amp;CCSID       *cat  +
                                      &amp;country     *cat  +
                                      &amp;lang        *cat  +
                                      &amp;rsv3        *cat  +
                                      &amp;pathtyp     *cat  +
                                      &amp;lPath       *cat  +
                                      &#039;/ &#039;         *cat  +
                                      &amp;rsv10       *cat  +
                                      &amp;path              +
                                    )

/* Call the API...                     */
   chgvar            &amp;lrcvvar       ( 1024 )
   call        QP0LROR     ( +
                             &amp;rcvvar      +
                             &amp;lrcvvar     +
                             RORO0200     +
                             &amp;path_t      +
                             x&#039;00000000&#039;  +
                           )

/* If &#039;in use&#039;...                      */
   if ( %sst( &amp;rcvvar  13  4 ) *ne &amp;x00 )  do   /* In-use indicator... */

   /* Find a job reference...             */
      chgvar         &amp;nRef      %bin( &amp;rcvvar   9  4 )

      if ( &amp;nRef *gt 0 )  do
         chgvar      &amp;oJobL     %bin( &amp;rcvvar  33  4 )
         chgvar      &amp;oJobL         ( &amp;oJobL + 1 )
         chgvar      &amp;oJobLE        ( &amp;oJobL + 16 )
         chgvar      &amp;dJobLE    %bin( &amp;rcvvar &amp;oJobLE 4 )
         chgvar      &amp;oJobLE        ( &amp;oJobL + 20 )
         chgvar      &amp;qjob      %sst( &amp;rcvvar &amp;oJobLE 26 )

      enddo
   enddo

dmpclpgm

   return

endpgm&lt;/pre&gt;
It accepts a path as a parm. The path is passed to QP0LROR to see if there are any active references. If the number of references is not zero, the first job from the returned list is extracted. A dump is then produced before exiting, so you can see what&#039;s in the returned structure and in other variables.

Create any streamfile in your home directory. Then open it with EDTF and start doing some edits. In a second session, call the example program with the full path to your streamfile as the parm. (Note that the parm is 128-bytes, so include enough trailing spaces.)

That&#039;s about all that&#039;s needed for this API. The Info Center &lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fapis%2Fqp0lror.htm&quot;&gt;documentation for QP0LROR&lt;/a&gt; should answer most questions about what you see when it runs. If not, well, that&#039;s what sites like this one are for.

Tom]]></description>
		<content:encoded><![CDATA[<p><i>&#8230;you can use the Retrieve Object References (QP0LROR) API, or examine the objects properties using iSeries Navigator.<br />
I do not know how to write code (Api&#8217;s)</i></p>
<p>APIs are just programs or procedures, called the same ways that you call programs or procedures that you might write yourself. Documentation is standard among all similar APIs; so once you understand one, a bunch of others become meaningful.</p>
<p>The Info Center has examples of <a href="http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fapiref%2FapiUse.htm">Using APIs</a>, and lots of examples are out on the internet. The section on <a href="http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fapiref%2Fpgmerr.htm">Common API programming errors</a> covers almost everything you&#8217;ll run into.</p>
<p>Here&#8217;s a basic example for QP0LROR written in V5R3 CL:
<pre>
pgm    ( +
         &amp;pPath       +
       )

   dcl   &amp;pPath       *char  128


   dcl   &amp;rcvvar      *char 1024     value( ' ' )
   dcl   &amp;lrcvvar     *uint
   dcl   &amp;path_t      *char  512     value( ' ' )
   dcl   &amp;CCSID       *char    4     value( x'00000000' )
   dcl   &amp;country     *char    2     value( x'0000' )
   dcl   &amp;lang        *char    3     value( x'000000' )
   dcl   &amp;pathtyp     *char    4     value( x'00000000' )
   dcl   &amp;path        *char  128
   dcl   &amp;lPath       *char    4     value( x'00000000' )
   dcl   &amp;LenPath     *dec (   5 0 ) value( 0 )
   dcl   &amp;rsv3        *char    3     value( x'000000' )
   dcl   &amp;rsv10       *char   10     value( x'00000000000000000000' )

   dcl   &amp;nRef        *dec (   5 0 ) value( 0 )
   dcl   &amp;oJobL       *dec (   5 0 ) value( 0 )
   dcl   &amp;dJobLE      *dec (   5 0 ) value( 0 )
   dcl   &amp;oJobLE      *dec (   5 0 ) value( 0 )
   dcl   &amp;qjob        *char   26     value( ' ' )

   dcl   &amp;x00         *char    4     value( x'00000000' )


/* Get the value away from the parm... */
   chgvar            &amp;path            &amp;pPath

/* Use this to determine length...     */
   rtvmsg     msgid( cpf9897 ) msgf( QSYS/QCPFMSG ) +
                msgdta( &amp;path )   +
                msglen( &amp;LenPath )

/* Set up the path.name structure...   */
   chgvar      %bin( &amp;lPath )         &amp;LenPath

   chgvar            &amp;path_t        ( +
                                      &amp;CCSID       *cat  +
                                      &amp;country     *cat  +
                                      &amp;lang        *cat  +
                                      &amp;rsv3        *cat  +
                                      &amp;pathtyp     *cat  +
                                      &amp;lPath       *cat  +
                                      '/ '         *cat  +
                                      &amp;rsv10       *cat  +
                                      &amp;path              +
                                    )

/* Call the API...                     */
   chgvar            &amp;lrcvvar       ( 1024 )
   call        QP0LROR     ( +
                             &amp;rcvvar      +
                             &amp;lrcvvar     +
                             RORO0200     +
                             &amp;path_t      +
                             x'00000000'  +
                           )

/* If 'in use'...                      */
   if ( %sst( &amp;rcvvar  13  4 ) *ne &amp;x00 )  do   /* In-use indicator... */

   /* Find a job reference...             */
      chgvar         &amp;nRef      %bin( &amp;rcvvar   9  4 )

      if ( &amp;nRef *gt 0 )  do
         chgvar      &amp;oJobL     %bin( &amp;rcvvar  33  4 )
         chgvar      &amp;oJobL         ( &amp;oJobL + 1 )
         chgvar      &amp;oJobLE        ( &amp;oJobL + 16 )
         chgvar      &amp;dJobLE    %bin( &amp;rcvvar &amp;oJobLE 4 )
         chgvar      &amp;oJobLE        ( &amp;oJobL + 20 )
         chgvar      &amp;qjob      %sst( &amp;rcvvar &amp;oJobLE 26 )

      enddo
   enddo

dmpclpgm

   return

endpgm</pre>
<p>It accepts a path as a parm. The path is passed to QP0LROR to see if there are any active references. If the number of references is not zero, the first job from the returned list is extracted. A dump is then produced before exiting, so you can see what&#8217;s in the returned structure and in other variables.</p>
<p>Create any streamfile in your home directory. Then open it with EDTF and start doing some edits. In a second session, call the example program with the full path to your streamfile as the parm. (Note that the parm is 128-bytes, so include enough trailing spaces.)</p>
<p>That&#8217;s about all that&#8217;s needed for this API. The Info Center <a href="http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fapis%2Fqp0lror.htm">documentation for QP0LROR</a> should answer most questions about what you see when it runs. If not, well, that&#8217;s what sites like this one are for.</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stiloabarthian</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/problems-deleting-a-file-in-ifs-directory/#comment-82681</link>
		<dc:creator>stiloabarthian</dc:creator>
		<pubDate>Thu, 21 Oct 2010 22:22:43 +0000</pubDate>
		<guid isPermaLink="false">#comment-82681</guid>
		<description><![CDATA[You could try qshell:-

&lt;pre&gt;qsh
rm /qdls/hdrpprt/~$100028.HTM&lt;/pre&gt;]]></description>
		<content:encoded><![CDATA[<p>You could try qshell:-</p>
<pre>qsh
rm /qdls/hdrpprt/~$100028.HTM</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: tomliotta</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/problems-deleting-a-file-in-ifs-directory/#comment-82657</link>
		<dc:creator>tomliotta</dc:creator>
		<pubDate>Thu, 21 Oct 2010 08:41:53 +0000</pubDate>
		<guid isPermaLink="false">#comment-82657</guid>
		<description><![CDATA[&lt;i&gt;Any suggestions as to why we can no longer delete using the windows mapped drive.&lt;/i&gt;

A likely possibility is that the object is in the /QDLS file system which is an old DOS 8.3 file system. More recent versions of Windows have been dropping support for those file systems over network interfaces. Combinations of Microsoft patches and IBM PTFs have kept up most support, but warnings have been coming out for more than a decade to stop using /QDLS.

At some point, it simply will no longer work at all across a network through Windows, and neither Microsoft nor IBM will have a fix. Leave it behind now.

Tom]]></description>
		<content:encoded><![CDATA[<p><i>Any suggestions as to why we can no longer delete using the windows mapped drive.</i></p>
<p>A likely possibility is that the object is in the /QDLS file system which is an old DOS 8.3 file system. More recent versions of Windows have been dropping support for those file systems over network interfaces. Combinations of Microsoft patches and IBM PTFs have kept up most support, but warnings have been coming out for more than a decade to stop using /QDLS.</p>
<p>At some point, it simply will no longer work at all across a network through Windows, and neither Microsoft nor IBM will have a fix. Leave it behind now.</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mbelle</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/problems-deleting-a-file-in-ifs-directory/#comment-37105</link>
		<dc:creator>mbelle</dc:creator>
		<pubDate>Mon, 23 May 2005 17:44:59 +0000</pubDate>
		<guid isPermaLink="false">#comment-37105</guid>
		<description><![CDATA[Have you tried to run RCLDLO(Reclaim DLO) or RCLSTG (Reclaim Storage)?]]></description>
		<content:encoded><![CDATA[<p>Have you tried to run RCLDLO(Reclaim DLO) or RCLSTG (Reclaim Storage)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sherrym</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/problems-deleting-a-file-in-ifs-directory/#comment-37106</link>
		<dc:creator>sherrym</dc:creator>
		<pubDate>Mon, 23 May 2005 17:25:14 +0000</pubDate>
		<guid isPermaLink="false">#comment-37106</guid>
		<description><![CDATA[Along these same lines:  We recieve &quot;Error Deleting File or Folder.  The source or destination file may be in use.&quot; when trying to delete the file on QDLS using a windows mapped drive.  We have been able to delete the file using wrklnk.  Any suggestions as to why we can no longer delete using the windows mapped drive.

Thanks!]]></description>
		<content:encoded><![CDATA[<p>Along these same lines:  We recieve &#8220;Error Deleting File or Folder.  The source or destination file may be in use.&#8221; when trying to delete the file on QDLS using a windows mapped drive.  We have been able to delete the file using wrklnk.  Any suggestions as to why we can no longer delete using the windows mapped drive.</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: addisonm</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/problems-deleting-a-file-in-ifs-directory/#comment-37107</link>
		<dc:creator>addisonm</dc:creator>
		<pubDate>Wed, 27 Apr 2005 13:58:52 +0000</pubDate>
		<guid isPermaLink="false">#comment-37107</guid>
		<description><![CDATA[Try to delete it with DLTDLO...]]></description>
		<content:encoded><![CDATA[<p>Try to delete it with DLTDLO&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 3/10 queries in 0.042 seconds using memcached
Object Caching 337/343 objects using memcached

Served from: itknowledgeexchange.techtarget.com @ 2013-05-26 00:00:03 -->