$title 'Test for Implicit Set Definition with default records' (IMPLSET2,SEQ=853) $onText This test ensures the implicitly defined set also get a record if the defining symbol has default records. Contributor: Lutz Westermann, January 2021 $offText Alias(u,*); * 1: Use a parameter with 0 values Set i(*); Parameter p(i<) / i0 0 i1 1 i2 0 i3 3 /; Set iWant / i0*i3 / iTest(u); iTest(u) = iWant(u) xor i(u); abort$card(iTest) iTest; * 2: Use a table with 0 values Set j(*); Table ij(i,j<) j0 j1 j2 j3 j4 i0 0 0 0 3 i1 0 0 0 3 i2 0 1 0 3 i3 0 1 0 3 ; Set jWant / j0*j2, j4 / jTest(u); jTest(u) = jWant(u) xor j(u); abort$card(jTest) jTest; * 3: Use a variable with default values Set k(*); Variable x(k<) / l0.l 0 m0.m 0 upInf.up +INF loInf.lo -INF /; Set kWant / l0, m0, upInf, loInf / kTest(u); kTest(u) = kWant(u) xor k(u); abort$card(kTest) kTest; * x has just default records -> card should be 0 abort$card(x) 'X should have just default records'; * 3: Use a variable table with default values Set l(*); Variable Table y(l<) l m up lo l0 0 m0 0 upInf +INF loInf -INF ; Set lWant / l0, m0, upInf, loInf / lTest(u); lTest(u) = lWant(u) xor l(u); abort$card(lTest) lTest; * y has just default records -> card should be 0 abort$card(y) 'Y should have just default records'; * 4: Load a parameter with 0 values from GDX Set m(*); Parameter pGDX(m<); Set mWant / 0*4 / mTest(u); $gdxIn zero.gdx $load pGDX=p mTest(u) = mWant(u) xor m(u); abort$card(mTest) mTest;