<?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 How can I use INTERFACE for an array that does not start with 1? in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/How-can-I-use-INTERFACE-for-an-array-that-does-not-start-with-1/m-p/926505#M86766</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I'm trying to pass an allocatable array to a function and am using INTERFACE so I do not have to pass the lower and upper limits of the array.&amp;nbsp; The array starts at 0 instead of 1 and I cannot get it to work.&amp;nbsp; I get the run-time error: "Subscript #1 of the array COEFS has value 0 which is less than the lower bound of 1."&amp;nbsp; Here is a sample program:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;PROGRAM Test_Interface&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IMPLICIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NONE&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; INTERFACE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FUNCTION Poly ( Val, Coefs )&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REAL, INTENT(IN) :: Coefs&amp;nbsp; (:)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! An array of polynomial coefficients in Poly().&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REAL, INTENT(IN) :: Val&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! The value to compute the polynomial for.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END FUNCTION Poly&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; END INTERFACE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; REAL, ALLOCATABLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: MyCoefs (:)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! A local array.&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ALLOCATE ( MyCoefs( 0:2 ) )&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MyCoefs(0) = 0.0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MyCoefs(1) = 1.0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MyCoefs(2) = 2.0&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; PRINT *, 'Poly = ', Poly( 1.0, MyCoefs )&lt;BR /&gt;&lt;BR /&gt;END PROGRAM Test_Interface&lt;BR /&gt;REAL FUNCTION Poly( Val, Coefs ) RESULT( Res )&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; REAL, INTENT(IN)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: Coefs(:)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; REAL, INTENT(IN)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: Val&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; INTEGER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: I&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; Res = 0.0&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; DO I=0,SIZE( Coefs )&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Res = Res + Coefs(I)*Val**I&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ENDDO ! I&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; RETURN&lt;BR /&gt;END FUNCTION Poly ! ( Val, Coefs )&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Yes, I know how to get around the problem by starting the array at 1 or passing the array bounds, but I would rather not do that.&amp;nbsp; Advice would be greatly appreciated.&lt;/P&gt;
&lt;P&gt;Marshall&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 19 Jun 2013 15:43:29 GMT</pubDate>
    <dc:creator>marshall-l-buhl</dc:creator>
    <dc:date>2013-06-19T15:43:29Z</dc:date>
    <item>
      <title>How can I use INTERFACE for an array that does not start with 1?</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/How-can-I-use-INTERFACE-for-an-array-that-does-not-start-with-1/m-p/926505#M86766</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I'm trying to pass an allocatable array to a function and am using INTERFACE so I do not have to pass the lower and upper limits of the array.&amp;nbsp; The array starts at 0 instead of 1 and I cannot get it to work.&amp;nbsp; I get the run-time error: "Subscript #1 of the array COEFS has value 0 which is less than the lower bound of 1."&amp;nbsp; Here is a sample program:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;PROGRAM Test_Interface&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IMPLICIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NONE&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; INTERFACE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FUNCTION Poly ( Val, Coefs )&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REAL, INTENT(IN) :: Coefs&amp;nbsp; (:)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! An array of polynomial coefficients in Poly().&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REAL, INTENT(IN) :: Val&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! The value to compute the polynomial for.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END FUNCTION Poly&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; END INTERFACE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; REAL, ALLOCATABLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: MyCoefs (:)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! A local array.&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ALLOCATE ( MyCoefs( 0:2 ) )&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MyCoefs(0) = 0.0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MyCoefs(1) = 1.0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MyCoefs(2) = 2.0&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; PRINT *, 'Poly = ', Poly( 1.0, MyCoefs )&lt;BR /&gt;&lt;BR /&gt;END PROGRAM Test_Interface&lt;BR /&gt;REAL FUNCTION Poly( Val, Coefs ) RESULT( Res )&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; REAL, INTENT(IN)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: Coefs(:)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; REAL, INTENT(IN)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: Val&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; INTEGER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: I&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; Res = 0.0&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; DO I=0,SIZE( Coefs )&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Res = Res + Coefs(I)*Val**I&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ENDDO ! I&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; RETURN&lt;BR /&gt;END FUNCTION Poly ! ( Val, Coefs )&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Yes, I know how to get around the problem by starting the array at 1 or passing the array bounds, but I would rather not do that.&amp;nbsp; Advice would be greatly appreciated.&lt;/P&gt;
&lt;P&gt;Marshall&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Jun 2013 15:43:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/How-can-I-use-INTERFACE-for-an-array-that-does-not-start-with-1/m-p/926505#M86766</guid>
      <dc:creator>marshall-l-buhl</dc:creator>
      <dc:date>2013-06-19T15:43:29Z</dc:date>
    </item>
    <item>
      <title>Oops!  I suppose that DO loop</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/How-can-I-use-INTERFACE-for-an-array-that-does-not-start-with-1/m-p/926506#M86767</link>
      <description>&lt;P&gt;Oops!&amp;nbsp; I suppose that DO loop should be:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;DO I=0,SIZE( Coefs )-1&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;</description>
      <pubDate>Wed, 19 Jun 2013 15:46:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/How-can-I-use-INTERFACE-for-an-array-that-does-not-start-with-1/m-p/926506#M86767</guid>
      <dc:creator>marshall-l-buhl</dc:creator>
      <dc:date>2013-06-19T15:46:26Z</dc:date>
    </item>
    <item>
      <title>This is the way Fortran</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/How-can-I-use-INTERFACE-for-an-array-that-does-not-start-with-1/m-p/926507#M86768</link>
      <description>&lt;P&gt;This is the way Fortran defines things for an assumed-shape array dummy argument.&amp;nbsp; The lower bound is 1 and the upper bound is the extent of the array.&amp;nbsp; You could declare the dummy argument as (0:) and that might do what you want. What you can't do is have the lower bound passed in automatically.&lt;/P&gt;</description>
      <pubDate>Wed, 19 Jun 2013 15:55:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/How-can-I-use-INTERFACE-for-an-array-that-does-not-start-with-1/m-p/926507#M86768</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2013-06-19T15:55:28Z</dc:date>
    </item>
    <item>
      <title>Steve,</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/How-can-I-use-INTERFACE-for-an-array-that-does-not-start-with-1/m-p/926508#M86769</link>
      <description>&lt;P&gt;Steve,&lt;/P&gt;
&lt;P&gt;You have come through for me once again.&amp;nbsp; That worked.&lt;/P&gt;
&lt;P&gt;I really do appreciate all the help you have given me over the years.&amp;nbsp; Tell you boss I think you deserve a raise!&amp;nbsp; :)&lt;/P&gt;
&lt;P&gt;Marshall&lt;/P&gt;</description>
      <pubDate>Wed, 19 Jun 2013 17:58:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/How-can-I-use-INTERFACE-for-an-array-that-does-not-start-with-1/m-p/926508#M86769</guid>
      <dc:creator>marshall-l-buhl</dc:creator>
      <dc:date>2013-06-19T17:58:19Z</dc:date>
    </item>
  </channel>
</rss>

