<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: sys$parse fails for long file names (length &amp;gt; 255) in Operating System - OpenVMS</title>
    <link>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7048358#M104659</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;gt; Following is the code snippet :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; A whole program would have been more helpful.&amp;nbsp; Actual file specs,&lt;BR /&gt;too.&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; Here's my (self-contained) version (with a few changes since the&lt;BR /&gt;released Zip and UnZip, assuming that my copy+paste worked):&lt;/P&gt;&lt;PRE&gt;its $ type longname.c
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

#include &amp;lt;rms.h&amp;gt;
#include &amp;lt;ssdef.h&amp;gt;
#include &amp;lt;starlet.h&amp;gt;

/* Define macros for use with either NAM or NAML. */

#ifdef NAML$C_MAXRSS            /* NAML is available (ODS5 support...) */

#  ifndef NAMX_MAXRSS           /* May have been defined before. */
#    define NAMX_MAXRSS NAML$C_MAXRSS
#  endif

#  define NAMX_STRUCT NAML

#  define FAB_OR_NAML(fab, nam) (nam)
#  define FAB_OR_NAML_DNA naml$l_long_defname
#  define FAB_OR_NAML_DNS naml$l_long_defname_size
#  define FAB_OR_NAML_FNA naml$l_long_filename
#  define FAB_OR_NAML_FNS naml$l_long_filename_size

#  define CC_RMS_NAMX cc$rms_naml
#  define FAB_NAMX fab$l_naml

#  define NAMX_ESA naml$l_long_expand
#  define NAMX_ESL naml$l_long_expand_size
#  define NAMX_ESS naml$l_long_expand_alloc
#  define NAMX_RSA naml$l_long_result
#  define NAMX_RSL naml$l_long_result_size
#  define NAMX_RSS naml$l_long_result_alloc
#  define NAMX_DID naml$w_did
#  define NAMX_DVI naml$t_dvi
#  define NAMX_FID naml$w_fid
#  define NAMX_FNB naml$l_fnb
#  define NAMX_NOP naml$b_nop
#  define NAMX_M_SYNCHK NAML$M_SYNCHK
#  define NAMX_B_DEV naml$l_long_dev_size
#  define NAMX_L_DEV naml$l_long_dev
#  define NAMX_B_DIR naml$l_long_dir_size
#  define NAMX_L_DIR naml$l_long_dir
#  define NAMX_B_NAME naml$l_long_name_size
#  define NAMX_L_NAME naml$l_long_name
#  define NAMX_B_TYPE naml$l_long_type_size
#  define NAMX_L_TYPE naml$l_long_type
#  define NAMX_B_VER naml$l_long_ver_size
#  define NAMX_L_VER naml$l_long_ver
#  define NAMX_DNA_FNA_SET( fab) (fab).fab$l_dna = (char *) -1; \
    (fab).fab$l_fna = (char *) -1;
                                
#else /* def NAML$C_MAXRSS */   /* NAML is not available.  Use NAM. */

#  ifndef NAMX_MAXRSS           /* May have been defined before. */
#    define NAMX_MAXRSS NAM$C_MAXRSS
#  endif

#  define NAMX_STRUCT NAM

#  define FAB_OR_NAML(fab, nam) (fab)
#  define FAB_OR_NAML_DNA fab$l_dna
#  define FAB_OR_NAML_DNS fab$b_dns
#  define FAB_OR_NAML_FNA fab$l_fna
#  define FAB_OR_NAML_FNS fab$b_fns

#  define CC_RMS_NAMX cc$rms_nam
#  define FAB_NAMX fab$l_nam
#  define NAMX_ESA nam$l_esa
#  define NAMX_ESL nam$b_esl
#  define NAMX_ESS nam$b_ess
#  define NAMX_RSA nam$l_rsa
#  define NAMX_RSL nam$b_rsl
#  define NAMX_RSS nam$b_rss
#  define NAMX_DID nam$w_did
#  define NAMX_DVI nam$t_dvi
#  define NAMX_FID nam$w_fid
#  define NAMX_FNB nam$l_fnb
#  define NAMX_NOP nam$b_nop
#  define NAMX_M_SYNCHK NAM$M_SYNCHK
#  define NAMX_B_DEV nam$b_dev
#  define NAMX_L_DEV nam$l_dev
#  define NAMX_B_DIR nam$b_dir
#  define NAMX_L_DIR nam$l_dir
#  define NAMX_B_NAME nam$b_name
#  define NAMX_L_NAME nam$l_name
#  define NAMX_B_TYPE nam$b_type
#  define NAMX_L_TYPE nam$l_type
#  define NAMX_B_VER nam$b_ver
#  define NAMX_L_VER nam$l_ver
#  define NAMX_DNA_FNA_SET( fab)

#endif /* def NAML$C_MAXRSS [else] */

int main( int argc, char **argv)
{
        int status;
        struct FAB fab;
        struct NAMX_STRUCT nam;

        char EName[NAMX_MAXRSS+ 1];
        char RName[NAMX_MAXRSS+ 1];

        char *vms_name = NULL;
        int vms_name_len = 0;

        char *short_name = "short.txt";

        char *vlong_name = "[.\
very_long_dire_name_very_long_dire_name_\
very_long_dire_name_very_long_dire_name_very_long_dire_name_]\
very_long_file_name_very_long_file_name_\
very_long_file_name_very_long_file_name_\
very_long_file_name_very_long_file_name_\
very_long_file_name_very_long_file_name_\
very_long_file_name_very_long_file_name_.txt";

        vms_name = short_name;

        if (argc &amp;gt; 1)
        {
                vms_name = vlong_name;
        }
        vms_name_len = strlen( vms_name);

        fprintf( stderr, " NAMX_MAXRSS = %d\n", NAMX_MAXRSS);
        fprintf( stderr, " vms_name_len = %d\n", vms_name_len);
        fprintf( stderr, " vms_name: &amp;gt;%s&amp;lt;\n", vms_name);

        fab = cc$rms_fab;
        nam = CC_RMS_NAMX;
        fab.FAB_NAMX = &amp;amp;nam;

        NAMX_DNA_FNA_SET( fab);
        
        /* Argument file name and length. */
        FAB_OR_NAML( fab, nam ).FAB_OR_NAML_FNA = vms_name;
        FAB_OR_NAML( fab, nam ).FAB_OR_NAML_FNS = vms_name_len;

        // /* Default file spec and length. */
        FAB_OR_NAML( fab, nam ).FAB_OR_NAML_DNA = NULL;
        FAB_OR_NAML( fab, nam ).FAB_OR_NAML_DNS = 0;

        nam.NAMX_ESA = (char*)&amp;amp;EName;
        nam.NAMX_ESS = sizeof( EName )- 1;
        nam.NAMX_RSA = (char*)&amp;amp;RName;
        nam.NAMX_RSS = sizeof( RName )- 1;

        status = sys$parse( &amp;amp;fab );
        if ( ( status &amp;amp; 0x7fff ) != SS$_NORMAL )
        {
                // Code to display the error message.
                fprintf( stderr, " sys$parse() sts = %08x\n", status);
        }
        else
        {
                fprintf( stderr, " ESL = %d\n", nam.NAMX_ESL);
                nam.NAMX_ESA[ nam.NAMX_ESL] = '\0';
                fprintf( stderr, " ESA: &amp;gt;%s&amp;lt;\n", nam.NAMX_ESA);
        }

        status = sys$search( &amp;amp;fab );
        if ( ( status &amp;amp; 0x7fff ) != SS$_NORMAL )
        {
                // Code to display the error message.
                fprintf( stderr, " sys$search() sts = %08x\n", status);
        }
        else
        {
                fprintf( stderr, " RSL = %d\n", nam.NAMX_RSL);
                nam.NAMX_RSA[ nam.NAMX_RSL] = '\0';
                fprintf( stderr, " RSA: &amp;gt;%s&amp;lt;\n", nam.NAMX_RSA);
        }

        exit( status);
}

its $ cc longname
its $ link longname

its $ mcr SYS$DISK:[]longname  
 NAMX_MAXRSS = 4095
 vms_name_len = 9
 vms_name: &amp;gt;short.txt&amp;lt;
 ESL = 29
 ESA: &amp;gt;ITS$DKA0:[SMS.itrc]short.txt;&amp;lt;
 RSL = 30
 RSA: &amp;gt;ITS$DKA0:[SMS.itrc]short.txt;1&amp;lt;

its $ mcr SYS$DISK:[]longname x
 NAMX_MAXRSS = 4095
 vms_name_len = 307
 vms_name: &amp;gt;[.very_long_dire_name_very_long_dire_name_very_long_dire_name_very_l
ong_dire_name_very_long_dire_name_]very_long_file_name_very_long_file_name_very_
long_file_name_very_long_file_name_very_long_file_name_very_long_file_name_very_
long_file_name_very_long_file_name_very_long_file_name_very_long_file_name_.txt&amp;lt;
 ESL = 325
 ESA: &amp;gt;ITS$DKA0:[SMS.itrc.very_long_dire_name_very_long_dire_name_very_long_dire
_name_very_long_dire_name_very_long_dire_name_]very_long_file_name_very_long_fil
e_name_very_long_file_name_very_long_file_name_very_long_file_name_very_long_fil
e_name_very_long_file_name_very_long_file_name_very_long_file_name_very_long_fil
e_name_.txt;&amp;lt;
 RSL = 326
 RSA: &amp;gt;ITS$DKA0:[SMS.itrc.very_long_dire_name_very_long_dire_name_very_long_dire
_name_very_long_dire_name_very_long_dire_name_]very_long_file_name_very_long_fil
e_name_very_long_file_name_very_long_file_name_very_long_file_name_very_long_fil
e_name_very_long_file_name_very_long_file_name_very_long_file_name_very_long_fil
e_name_.txt;1&amp;lt;&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;&amp;gt; This works for all files except the one with long file names.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; With my weak psychic powers, I can't see your file specs.&lt;/P&gt;</description>
    <pubDate>Fri, 31 May 2019 04:27:29 GMT</pubDate>
    <dc:creator>Steven Schweda</dc:creator>
    <dc:date>2019-05-31T04:27:29Z</dc:date>
    <item>
      <title>sys$parse fails for long file names (length &gt; 255)</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7048182#M104653</link>
      <description>&lt;P&gt;Hi there,&lt;/P&gt;&lt;P&gt;I wish to open a file (using sys$open), but that fails for files with file name length &amp;gt; 255 ("%RMS-F-SYN, file specification syntax error"). Hence I decided to use condensed file name instead for which I need Directory ID (DID). Now, to retrieve the DID of a file I thought of using sys$parse and sys$search, but that is also failing with the same error.&amp;nbsp; In the code, I am making sure to use NAML$L_LONG_FILENAM, etc. but it is still failing. Hence, I have the following queries:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Is there a way possible to directly use sys$parse on the long file name?&lt;/LI&gt;&lt;LI&gt;If not, is there an alternate way of retrieving the DID or converting the filename to condensed form?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, if there is any sample program which handles the opening of files with long file names, providing that would be really helpful.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;</description>
      <pubDate>Wed, 29 May 2019 15:45:29 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7048182#M104653</guid>
      <dc:creator>madhav_poddar</dc:creator>
      <dc:date>2019-05-29T15:45:29Z</dc:date>
    </item>
    <item>
      <title>Re: sys$parse fails for long file names (length &gt; 255)</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7048193#M104654</link>
      <description>&lt;P&gt;&amp;gt; o Is there a way possible to directly use sys$parse on the long&lt;BR /&gt;&amp;gt; file name?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Yes.&amp;nbsp; Sadly, I'm not very good at debugging invisible code.&lt;BR /&gt;Copy+paste is your friend.&lt;/P&gt;&lt;P&gt;&amp;gt; Also, if there is any sample program which handles the opening of&lt;BR /&gt;&amp;gt; files with long file names, providing that would be really helpful.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; There may be smaller examples, but have you looked at the Info-ZIP&lt;BR /&gt;Zip (3.0 or later) and UnZip (6.00 or later) code (typically&lt;BR /&gt;[.vms]vms.c in each)?&amp;nbsp; (If you get an error (RMS-F-SYN, or any other)&lt;BR /&gt;from either of those programs, then please let me know.)&lt;/P&gt;</description>
      <pubDate>Wed, 29 May 2019 18:35:04 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7048193#M104654</guid>
      <dc:creator>Steven Schweda</dc:creator>
      <dc:date>2019-05-29T18:35:04Z</dc:date>
    </item>
    <item>
      <title>Re: sys$parse fails for long file names (length &gt; 255)</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7048298#M104657</link>
      <description>&lt;P&gt;Following is the code snippet :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;	int status;
	struct FAB fab;
	struct NAM_STRUCT nam;

	char EName[NAM_MAXRSS];
	char RName[NAM_MAXRSS];

	fab = cc$rms_fab;
	nam = CC_RMS_NAM;
	fab.FAB_NAM = &amp;amp;nam;

#ifdef NAML$C_MAXRSS
	fab.fab$l_dna = (char *) -1;		/* Using NAML for default name. */
	fab.fab$l_fna = (char *) -1;		/* Using NAML for file name. */
#endif /* def NAML$C_MAXRSS */
	

	/* Argument file name and length. */
	FAB_OR_NAML( fab, nam ).FAB_OR_NAML_FNA = (char*)malloc( fileNameVMS.length() + 1 );
	strcpy( FAB_OR_NAML( fab, nam ).FAB_OR_NAML_FNA, fileNameVMS.c_str() );
	FAB_OR_NAML( fab, nam ).FAB_OR_NAML_FNS = fileNameVMS.length();

	// /* Default file spec and length. */
	FAB_OR_NAML( fab, nam ).FAB_OR_NAML_DNA = NULL;
	FAB_OR_NAML( fab, nam ).FAB_OR_NAML_DNS = 0;

	nam.NAM_ESA = (char*)&amp;amp;EName;
	nam.NAM_ESS = sizeof( EName );
	nam.NAM_RSA = (char*)&amp;amp;RName;
	nam.NAM_RSS = sizeof( RName );

	status = sys$parse( &amp;amp;fab );
	if ( ( status &amp;amp; 0x7fff ) != SS$_NORMAL )
	{
		// Code to display the error message.
	}

	status = sys$search( &amp;amp;fab );
	if ( ( status &amp;amp; 0x7fff ) != SS$_NORMAL )
	{
		// Code to display the error message.
	}&lt;/PRE&gt;&lt;P&gt;This works for all files except the one with long file names.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 May 2019 12:00:42 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7048298#M104657</guid>
      <dc:creator>madhav_poddar</dc:creator>
      <dc:date>2019-05-30T12:00:42Z</dc:date>
    </item>
    <item>
      <title>Re: sys$parse fails for long file names (length &gt; 255)</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7048358#M104659</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;gt; Following is the code snippet :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; A whole program would have been more helpful.&amp;nbsp; Actual file specs,&lt;BR /&gt;too.&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; Here's my (self-contained) version (with a few changes since the&lt;BR /&gt;released Zip and UnZip, assuming that my copy+paste worked):&lt;/P&gt;&lt;PRE&gt;its $ type longname.c
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

#include &amp;lt;rms.h&amp;gt;
#include &amp;lt;ssdef.h&amp;gt;
#include &amp;lt;starlet.h&amp;gt;

/* Define macros for use with either NAM or NAML. */

#ifdef NAML$C_MAXRSS            /* NAML is available (ODS5 support...) */

#  ifndef NAMX_MAXRSS           /* May have been defined before. */
#    define NAMX_MAXRSS NAML$C_MAXRSS
#  endif

#  define NAMX_STRUCT NAML

#  define FAB_OR_NAML(fab, nam) (nam)
#  define FAB_OR_NAML_DNA naml$l_long_defname
#  define FAB_OR_NAML_DNS naml$l_long_defname_size
#  define FAB_OR_NAML_FNA naml$l_long_filename
#  define FAB_OR_NAML_FNS naml$l_long_filename_size

#  define CC_RMS_NAMX cc$rms_naml
#  define FAB_NAMX fab$l_naml

#  define NAMX_ESA naml$l_long_expand
#  define NAMX_ESL naml$l_long_expand_size
#  define NAMX_ESS naml$l_long_expand_alloc
#  define NAMX_RSA naml$l_long_result
#  define NAMX_RSL naml$l_long_result_size
#  define NAMX_RSS naml$l_long_result_alloc
#  define NAMX_DID naml$w_did
#  define NAMX_DVI naml$t_dvi
#  define NAMX_FID naml$w_fid
#  define NAMX_FNB naml$l_fnb
#  define NAMX_NOP naml$b_nop
#  define NAMX_M_SYNCHK NAML$M_SYNCHK
#  define NAMX_B_DEV naml$l_long_dev_size
#  define NAMX_L_DEV naml$l_long_dev
#  define NAMX_B_DIR naml$l_long_dir_size
#  define NAMX_L_DIR naml$l_long_dir
#  define NAMX_B_NAME naml$l_long_name_size
#  define NAMX_L_NAME naml$l_long_name
#  define NAMX_B_TYPE naml$l_long_type_size
#  define NAMX_L_TYPE naml$l_long_type
#  define NAMX_B_VER naml$l_long_ver_size
#  define NAMX_L_VER naml$l_long_ver
#  define NAMX_DNA_FNA_SET( fab) (fab).fab$l_dna = (char *) -1; \
    (fab).fab$l_fna = (char *) -1;
                                
#else /* def NAML$C_MAXRSS */   /* NAML is not available.  Use NAM. */

#  ifndef NAMX_MAXRSS           /* May have been defined before. */
#    define NAMX_MAXRSS NAM$C_MAXRSS
#  endif

#  define NAMX_STRUCT NAM

#  define FAB_OR_NAML(fab, nam) (fab)
#  define FAB_OR_NAML_DNA fab$l_dna
#  define FAB_OR_NAML_DNS fab$b_dns
#  define FAB_OR_NAML_FNA fab$l_fna
#  define FAB_OR_NAML_FNS fab$b_fns

#  define CC_RMS_NAMX cc$rms_nam
#  define FAB_NAMX fab$l_nam
#  define NAMX_ESA nam$l_esa
#  define NAMX_ESL nam$b_esl
#  define NAMX_ESS nam$b_ess
#  define NAMX_RSA nam$l_rsa
#  define NAMX_RSL nam$b_rsl
#  define NAMX_RSS nam$b_rss
#  define NAMX_DID nam$w_did
#  define NAMX_DVI nam$t_dvi
#  define NAMX_FID nam$w_fid
#  define NAMX_FNB nam$l_fnb
#  define NAMX_NOP nam$b_nop
#  define NAMX_M_SYNCHK NAM$M_SYNCHK
#  define NAMX_B_DEV nam$b_dev
#  define NAMX_L_DEV nam$l_dev
#  define NAMX_B_DIR nam$b_dir
#  define NAMX_L_DIR nam$l_dir
#  define NAMX_B_NAME nam$b_name
#  define NAMX_L_NAME nam$l_name
#  define NAMX_B_TYPE nam$b_type
#  define NAMX_L_TYPE nam$l_type
#  define NAMX_B_VER nam$b_ver
#  define NAMX_L_VER nam$l_ver
#  define NAMX_DNA_FNA_SET( fab)

#endif /* def NAML$C_MAXRSS [else] */

int main( int argc, char **argv)
{
        int status;
        struct FAB fab;
        struct NAMX_STRUCT nam;

        char EName[NAMX_MAXRSS+ 1];
        char RName[NAMX_MAXRSS+ 1];

        char *vms_name = NULL;
        int vms_name_len = 0;

        char *short_name = "short.txt";

        char *vlong_name = "[.\
very_long_dire_name_very_long_dire_name_\
very_long_dire_name_very_long_dire_name_very_long_dire_name_]\
very_long_file_name_very_long_file_name_\
very_long_file_name_very_long_file_name_\
very_long_file_name_very_long_file_name_\
very_long_file_name_very_long_file_name_\
very_long_file_name_very_long_file_name_.txt";

        vms_name = short_name;

        if (argc &amp;gt; 1)
        {
                vms_name = vlong_name;
        }
        vms_name_len = strlen( vms_name);

        fprintf( stderr, " NAMX_MAXRSS = %d\n", NAMX_MAXRSS);
        fprintf( stderr, " vms_name_len = %d\n", vms_name_len);
        fprintf( stderr, " vms_name: &amp;gt;%s&amp;lt;\n", vms_name);

        fab = cc$rms_fab;
        nam = CC_RMS_NAMX;
        fab.FAB_NAMX = &amp;amp;nam;

        NAMX_DNA_FNA_SET( fab);
        
        /* Argument file name and length. */
        FAB_OR_NAML( fab, nam ).FAB_OR_NAML_FNA = vms_name;
        FAB_OR_NAML( fab, nam ).FAB_OR_NAML_FNS = vms_name_len;

        // /* Default file spec and length. */
        FAB_OR_NAML( fab, nam ).FAB_OR_NAML_DNA = NULL;
        FAB_OR_NAML( fab, nam ).FAB_OR_NAML_DNS = 0;

        nam.NAMX_ESA = (char*)&amp;amp;EName;
        nam.NAMX_ESS = sizeof( EName )- 1;
        nam.NAMX_RSA = (char*)&amp;amp;RName;
        nam.NAMX_RSS = sizeof( RName )- 1;

        status = sys$parse( &amp;amp;fab );
        if ( ( status &amp;amp; 0x7fff ) != SS$_NORMAL )
        {
                // Code to display the error message.
                fprintf( stderr, " sys$parse() sts = %08x\n", status);
        }
        else
        {
                fprintf( stderr, " ESL = %d\n", nam.NAMX_ESL);
                nam.NAMX_ESA[ nam.NAMX_ESL] = '\0';
                fprintf( stderr, " ESA: &amp;gt;%s&amp;lt;\n", nam.NAMX_ESA);
        }

        status = sys$search( &amp;amp;fab );
        if ( ( status &amp;amp; 0x7fff ) != SS$_NORMAL )
        {
                // Code to display the error message.
                fprintf( stderr, " sys$search() sts = %08x\n", status);
        }
        else
        {
                fprintf( stderr, " RSL = %d\n", nam.NAMX_RSL);
                nam.NAMX_RSA[ nam.NAMX_RSL] = '\0';
                fprintf( stderr, " RSA: &amp;gt;%s&amp;lt;\n", nam.NAMX_RSA);
        }

        exit( status);
}

its $ cc longname
its $ link longname

its $ mcr SYS$DISK:[]longname  
 NAMX_MAXRSS = 4095
 vms_name_len = 9
 vms_name: &amp;gt;short.txt&amp;lt;
 ESL = 29
 ESA: &amp;gt;ITS$DKA0:[SMS.itrc]short.txt;&amp;lt;
 RSL = 30
 RSA: &amp;gt;ITS$DKA0:[SMS.itrc]short.txt;1&amp;lt;

its $ mcr SYS$DISK:[]longname x
 NAMX_MAXRSS = 4095
 vms_name_len = 307
 vms_name: &amp;gt;[.very_long_dire_name_very_long_dire_name_very_long_dire_name_very_l
ong_dire_name_very_long_dire_name_]very_long_file_name_very_long_file_name_very_
long_file_name_very_long_file_name_very_long_file_name_very_long_file_name_very_
long_file_name_very_long_file_name_very_long_file_name_very_long_file_name_.txt&amp;lt;
 ESL = 325
 ESA: &amp;gt;ITS$DKA0:[SMS.itrc.very_long_dire_name_very_long_dire_name_very_long_dire
_name_very_long_dire_name_very_long_dire_name_]very_long_file_name_very_long_fil
e_name_very_long_file_name_very_long_file_name_very_long_file_name_very_long_fil
e_name_very_long_file_name_very_long_file_name_very_long_file_name_very_long_fil
e_name_.txt;&amp;lt;
 RSL = 326
 RSA: &amp;gt;ITS$DKA0:[SMS.itrc.very_long_dire_name_very_long_dire_name_very_long_dire
_name_very_long_dire_name_very_long_dire_name_]very_long_file_name_very_long_fil
e_name_very_long_file_name_very_long_file_name_very_long_file_name_very_long_fil
e_name_very_long_file_name_very_long_file_name_very_long_file_name_very_long_fil
e_name_.txt;1&amp;lt;&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;&amp;gt; This works for all files except the one with long file names.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; With my weak psychic powers, I can't see your file specs.&lt;/P&gt;</description>
      <pubDate>Fri, 31 May 2019 04:27:29 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7048358#M104659</guid>
      <dc:creator>Steven Schweda</dc:creator>
      <dc:date>2019-05-31T04:27:29Z</dc:date>
    </item>
    <item>
      <title>Re: sys$parse fails for long file names (length &gt; 255)</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7049161#M104669</link>
      <description>&lt;P&gt;Hi Madhav,&lt;BR /&gt;It may be due to OD2 and OD5 file parsing compatibility issue,&lt;BR /&gt;so I would suggest to check $ show dev dkannn:/full&lt;/P&gt;&lt;P&gt;and create a sample file with parse_style = Traditional and extended using&lt;BR /&gt;$ set process /parse_style = standard&lt;BR /&gt;$ open/write file x.x.x.x&lt;BR /&gt;&lt;BR /&gt;and do test the same with $ set process/parse_style = extended&lt;BR /&gt;$ open/write file x.x.x.x&lt;/P&gt;&lt;P&gt;Dont' create extended file one ods-2 as it wont' support for some versions.&lt;/P&gt;&lt;P&gt;Regards&lt;BR /&gt;Archunan&lt;/P&gt;</description>
      <pubDate>Fri, 07 Jun 2019 11:44:12 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7049161#M104669</guid>
      <dc:creator>Arch_Muthiah</dc:creator>
      <dc:date>2019-06-07T11:44:12Z</dc:date>
    </item>
    <item>
      <title>Re: sys$parse fails for long file names (length &gt; 255)</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7049353#M104670</link>
      <description>&lt;P&gt;&amp;gt; It may be due to OD2 and OD5 file parsing compatibility issue, [...]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; I doubt it.&amp;nbsp; I'd expect sys$parse() not to care about the file&lt;BR /&gt;system.&amp;nbsp; I'd expect sys$search() to care about that.&amp;nbsp; For example, using&lt;BR /&gt;a slightly modified version of the program above:&lt;/P&gt;&lt;PRE&gt;ITS $ show devi /full ITS$LDA3:
[...]
  Volume Status:  ODS-2, [...]

ITS $ mcr ITS$DKA0:[SMS.itrc]longname2 x x
 NAMX_MAXRSS = 4095
 vms_name_len = 271
 vms_name: &amp;gt;[.dire_name_dire_name_dire_name_dire_name]very_long_file_name_very_l
ong_file_name_very_long_file_name_very_long_file_name_very_long_file_name_very_l
ong_file_name_very_long_file_name_very_long_file_name_very_long_file_name_very_l
ong_file_name_very_long_file_name_very_.txt&amp;lt;
 ESL = 284
 ESA: &amp;gt;ITS$LDA3:[SMS.DIRE_NAME_DIRE_NAME_DIRE_NAME_DIRE_NAME]very_long_file_name
_very_long_file_name_very_long_file_name_very_long_file_name_very_long_file_name
_very_long_file_name_very_long_file_name_very_long_file_name_very_long_file_name
_very_long_file_name_very_long_file_name_very_.txt;&amp;lt;
 sys$search() sts = 0001c02a
%RMS-E-FND, ACP file or directory lookup failed
-NONAME-W-NOMSG, Message number 00000000&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; Note: No complaint from sys$parse(), only from sys$search().&amp;nbsp; (The&lt;BR /&gt;directory exists; the file does not.)&lt;/P&gt;</description>
      <pubDate>Sat, 08 Jun 2019 20:21:14 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7049353#M104670</guid>
      <dc:creator>Steven Schweda</dc:creator>
      <dc:date>2019-06-08T20:21:14Z</dc:date>
    </item>
    <item>
      <title>Re: sys$parse fails for long file names (length &gt; 255)</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7049760#M104673</link>
      <description>&lt;P&gt;Thanks Stewen,&lt;BR /&gt;I understand you must have explored lot and lot on this $parse/$search on part of your zip/unzip product, I still have have doubt on ODS compatibility too, let me go through and understand it more.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Thanks Steve,&lt;/P&gt;</description>
      <pubDate>Tue, 11 Jun 2019 11:34:35 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7049760#M104673</guid>
      <dc:creator>Arch_Muthiah</dc:creator>
      <dc:date>2019-06-11T11:34:35Z</dc:date>
    </item>
    <item>
      <title>Re: sys$parse fails for long file names (length &gt; 255)</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7049848#M104674</link>
      <description>&lt;P&gt;&amp;gt; I understand you must have explored lot and lot on this $parse/$search&lt;BR /&gt;&amp;gt; on part of your zip/unzip product, [...]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Probably less than I should have, but more than some others, and&lt;BR /&gt;enough to get some things to work.&lt;/P&gt;&lt;P&gt;&amp;gt; [...] I still have have doubt on ODS compatibility too, let me go&lt;BR /&gt;&amp;gt; through and understand it more.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; How could I stop you?&amp;nbsp; In any case, you can see the program which I&lt;BR /&gt;used (or almost all of it, at least).&amp;nbsp; I'm always open to a good&lt;BR /&gt;educational experience, if you find anything interesting.&lt;/P&gt;</description>
      <pubDate>Tue, 11 Jun 2019 20:52:54 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/sys-parse-fails-for-long-file-names-length-gt-255/m-p/7049848#M104674</guid>
      <dc:creator>Steven Schweda</dc:creator>
      <dc:date>2019-06-11T20:52:54Z</dc:date>
    </item>
  </channel>
</rss>

