This error has been resolved in the meantime with:

 * <http://sourceforge.net/p/oorexx/code-0/12430>
 * <http://sourceforge.net/p/oorexx/code-0/12431>
 * <http://sourceforge.net/p/oorexx/code-0/12432>

Thanks a lot!

---rony


On 6/5/2022 4:27 PM, Rony G. Flatscher wrote:

Here a testcase that also shows effects of enlarging the array (basically whenever one dimension gets its size increased).

    a=.array~new
    a[1,1]="1,1"   /* first usage, makes array a two dimensional array */
    say "after setting a[1,1]:" pp(a[1,1])
    a[2,1]="2,1"
    say "after setting a[2,1]:" pp(a[2,1])
    a[2,2]="2,2"
    say "after setting a[2,2]:" pp(a[2,2])
    a[2,3]="2,3"
    say "after setting a[2,3]:" pp(a[2,3])
    say
    call dump0 a
    say

    say center(" now enlarging array, because of a[5,3]='5,3' ", 79, "=")
    a[4,5]="4,5"
    say "after setting a[4,5]:" pp(a[4,5]) "/" "a[2,1]:" pp(a[2,1]) "error <-- 
dimension(1) raised to 4, dimension(2) to 5"
    say
    call dump0 a
    say

    say center(" now enlarging array, because of a[5,3]='5,3' ", 79, "=")
    say
    a~put("5,3", 5, 3) /* use PUT instead of []= */
    say "a[2,1]:" pp(a[2,1]) "/" "a[4,5]:" pp(a[4,5]) "/" "a[5,3]:" pp(a[5,3])
    say
    call dump0 a
    say

    say center(" now enlarging array, because of a[6,7]='6,7' ", 79, "=")
    say
    a~put("6,7", 6, 7) /* use PUT instead of []= */
    say "a[2,1]:" pp(a[2,1]) "/" "a[4,5]:" pp(a[4,5]) "/" "a[5,3]:" pp(a[5,3]) "/" 
"a[6,7]:" pp(a[6,7])
    say
    say "a[2,1]:" pp(a[2,1])
    say "a[4,5]:" pp(a[4,5])
    say "a[5,3]:" pp(a[5,3])
    call dump0 a
    say
    say "a[2,1]:" pp(a[2,1])
    say "a[4,5]:" pp(a[4,5])
    say "a[5,3]:" pp(a[5,3])
    say "a[6,7]:" pp(a[6,7])


    ::routine dump0
       use arg a
       say "dump0: a~dimension:" pp(a~dimension) "/" "a~dimension(1):" pp(a~dimension(1)) 
"/" "a~dimension(2):" pp(a~dimension(2))
       say "dump0: a~items    :" pp(a~items)     "/" "a~size        :" 
pp(a~size)
       tab="09"x
       say
       element=1
       do i=1 to a~dimension(1)
          do k=1 to a~dimension(2)
             -- if \a[i,k]~isNil then
                say tab "#" element~right(2)":" "a["i","k"]:" a[i,k]
             element+=1
          end
       end
       say

    ::routine pp
       return "["arg(1)"]"

Here the output of running the above script:

    after setting a[1,1]: [1,1]
    after setting a[2,1]: [2,1]
    after setting a[2,2]: [2,2]
    after setting a[2,3]: [2,3]

    dump0: a~dimension: [2] / a~dimension(1): [2] / a~dimension(2): [3]
    dump0: a~items    : [4] / a~size        : [6]

              #  1: a[1,1]: 1,1
              #  2: a[1,2]: The NIL object
              #  3: a[1,3]: The NIL object
              *# 4:*  a[2,1]:*2,1*
              #  5: a[2,2]: 2,2
              #  6: a[2,3]: 2,3


    ================ now enlarging array, because of a[5,3]='5,3' 
=================
    after setting a[4,5]: [4,5] //a[2,1]: [2,3]/  error <-- dimension(1) raised 
to 4, dimension(2) to 5

    dump0: a~dimension: [2] / a~dimension(1): [4] / a~dimension(2): [5]
    dump0: a~items    : [5] / a~size        : [20]

              #  1: a[1,1]: 1,1
              #  2: a[1,2]: The NIL object
              #  3: a[1,3]: The NIL object
              *# 4:*  a[1,4]:*2,1*
              #  5: a[1,5]: 2,2
              #  6: a[2,1]: 2,3
              #  7: a[2,2]: The NIL object
              #  8: a[2,3]: The NIL object
              #  9: a[2,4]: The NIL object
              # 10: a[2,5]: The NIL object
              # 11: a[3,1]: The NIL object
              # 12: a[3,2]: The NIL object
              # 13: a[3,3]: The NIL object
              # 14: a[3,4]: The NIL object
              # 15: a[3,5]: The NIL object
              # 16: a[4,1]: The NIL object
              # 17: a[4,2]: The NIL object
              # 18: a[4,3]: The NIL object
              # 19: a[4,4]: The NIL object
              *# 20:*  a[4,5]:*4,5*


    ================ now enlarging array, because of a[5,3]='5,3' 
=================

    /a[2,1]: [2,3]/  / a[4,5]: [4,5] / a[5,3]: [5,3]

    dump0: a~dimension: [2] / a~dimension(1): [5] / a~dimension(2): [5]
    dump0: a~items    : [6] / a~size        : [25]

              #  1: a[1,1]: 1,1
              #  2: a[1,2]: The NIL object
              #  3: a[1,3]: The NIL object
             *# 4:*  a[1,4]:*2,1*
              #  5: a[1,5]: 2,2
              #  6: a[2,1]: 2,3
              #  7: a[2,2]: The NIL object
              #  8: a[2,3]: The NIL object
              #  9: a[2,4]: The NIL object
              # 10: a[2,5]: The NIL object
              # 11: a[3,1]: The NIL object
              # 12: a[3,2]: The NIL object
              # 13: a[3,3]: The NIL object
              # 14: a[3,4]: The NIL object
              # 15: a[3,5]: The NIL object
              # 16: a[4,1]: The NIL object
              # 17: a[4,2]: The NIL object
              # 18: a[4,3]: The NIL object
              # 19: a[4,4]: The NIL object
              *# 20:*  a[4,5]:*4,5*
              # 21: a[5,1]: The NIL object
              # 22: a[5,2]: The NIL object
             *# 23:*  a[5,3]:*5,3*
              # 24: a[5,4]: The NIL object
              # 25: a[5,5]: The NIL object


    ================ now enlarging array, because of a[6,7]='6,7' 
=================

    /a[2,1]: [The NIL object] / a[4,5]: [The NIL object] / a[5,3]: [The NIL 
object]/  / a[6,7]: [6,7]

    a[2,1]: [The NIL object]
    a[4,5]: [The NIL object]
    a[5,3]: [The NIL object]
    dump0: a~dimension: [2] / a~dimension(1): [6] / a~dimension(2): [7]
    dump0: a~items    : [7] / a~size        : [42]

              #  1: a[1,1]: 1,1
              #  2: a[1,2]: The NIL object
              #  3: a[1,3]: The NIL object
             *# 4*: a[1,4]:*2,1*
              #  5: a[1,5]: 2,2
              #  6: a[1,6]: 2,3
              #  7: a[1,7]: The NIL object
              #  8: a[2,1]: The NIL object
              #  9: a[2,2]: The NIL object
              # 10: a[2,3]: The NIL object
              # 11: a[2,4]: The NIL object
              # 12: a[2,5]: The NIL object
              # 13: a[2,6]: The NIL object
              # 14: a[2,7]: The NIL object
              # 15: a[3,1]: The NIL object
              # 16: a[3,2]: The NIL object
              # 17: a[3,3]: The NIL object
              # 18: a[3,4]: The NIL object
              # 19: a[3,5]: The NIL object
              *# 20:*  a[3,6]:*4,5*
              # 21: a[3,7]: The NIL object
              # 22: a[4,1]: The NIL object
              *# 23:*  a[4,2]:*5,3*
              # 24: a[4,3]: The NIL object
              # 25: a[4,4]: The NIL object
              # 26: a[4,5]: The NIL object
              # 27: a[4,6]: The NIL object
              # 28: a[4,7]: The NIL object
              # 29: a[5,1]: The NIL object
              # 30: a[5,2]: The NIL object
              # 31: a[5,3]: The NIL object
              # 32: a[5,4]: The NIL object
              # 33: a[5,5]: The NIL object
              # 34: a[5,6]: The NIL object
              # 35: a[5,7]: The NIL object
              # 36: a[6,1]: The NIL object
              # 37: a[6,2]: The NIL object
              # 38: a[6,3]: The NIL object
              # 39: a[6,4]: The NIL object
              # 40: a[6,5]: The NIL object
              # 41: a[6,6]: The NIL object
              *# 42:*  a[6,7]:*6,7*


    a[2,1]: [The NIL object]
    a[4,5]: [The NIL object]
    a[5,3]: [The NIL object]
    a[6,7]: [6,7]

In the loop the values occur at the same "element positions" (iterations of the 
loop).

---rony

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to