$title Test dmpSym and dmpUserSym feature (dmpSym01,SEQ=839) $onText This test verifies that the symbol dump printed to the output file using $debug/option dmpSym (and its variants $debug/option dmpUserSym) works as expected. If more internal symbols get added, this test will be adjusted in future. Contributor: Lutz Westermann, November 2020 $offText $onEcho > t.gms Set i 'canning plants' / seattle, san-diego / j 'markets' / new-york, chicago, topeka /; Parameter a(i) 'capacity of plant i in cases' / seattle 350 san-diego 600 / b(j) 'demand at market j in cases' / new-york 325 chicago 300 topeka 275 /; $debug dmpUserSym Table d(i,j) 'distance in thousands of miles' new-york chicago topeka seattle 2.5 1.7 1.8 san-diego 2.5 1.8 1.4; $debug dmpSym $onExternalInput Scalar f 'freight in dollars per case per thousand miles' / 90 /; $offExternalInput option dmpUserSym; Parameter c(i,j) 'transport cost in thousands of dollars per case'; c(i,j) = f*d(i,j)/1000; Variable x(i,j) 'shipment quantities in cases' z 'total transportation costs in thousands of dollars'; Positive Variable x; Equation cost 'define objective function' supply(i) 'observe supply limit at plant i' demand(j) 'satisfy demand at market j'; cost.. z =e= sum((i,j), c(i,j)*x(i,j)); supply(i).. sum(j, x(i,j)) =l= a(i); demand(j).. sum(i, x(i,j)) =g= b(j); Model transport / all /; solve transport using lp minimizing z; option dmpSym; $offEcho $onEcho > tWant.txt SYMBOL TABLE DUMP (USER SYMBOLS ONLY), NR ENTRIES = 4 ENTRY ID TYPE DIM LENGTH MEMORYEST DEFINED ASSIGNED DATAKNOWN 138 i SET 1 2 0 MB TRUE FALSE TRUE 139 j SET 1 3 0 MB TRUE FALSE TRUE 140 a PARAM 1 2 0 MB TRUE FALSE TRUE 141 b PARAM 1 3 0 MB TRUE FALSE TRUE END OF SYMBOL TABLE DUMP SYMBOL TABLE DUMP, NR ENTRIES = 142 ENTRY ID TYPE DIM DIM-OK LENGTH MEMORYEST DEFINED ASSIGNED DATAKNOWN ACCESS SPECVAL EXTERN TABLE DOMAIN LAGLEAD 1 mapval FUNCT 0 2 ceil FUNCT 1 3 floor FUNCT 2 4 round FUNCT 3 5 mod FUNCT 4 6 trunc FUNCT 5 7 sign FUNCT 6 8 min FUNCT 7 9 max FUNCT 8 10 sqr FUNCT 9 11 exp FUNCT 10 12 log FUNCT 11 13 log10 FUNCT 12 14 sqrt FUNCT 13 15 abs FUNCT 14 16 cos FUNCT 15 17 sin FUNCT 16 18 arctan FUNCT 17 19 errorf FUNCT 18 20 uniform FUNCT 19 21 normal FUNCT 20 22 power FUNCT 21 23 jdate FUNCT 22 24 jtime FUNCT 23 25 jstart FUNCT 24 26 jnow FUNCT 25 27 execerror FUNCT 26 28 gyear FUNCT 27 29 gmonth FUNCT 28 30 gday FUNCT 29 31 gdow FUNCT 30 32 gleap FUNCT 31 33 ghour FUNCT 32 34 gminute FUNCT 33 35 gsecond FUNCT 34 36 execseed FUNCT 35 37 timestart FUNCT 36 38 timecomp FUNCT 37 39 timeexec FUNCT 38 40 timeclose FUNCT 39 41 frac FUNCT 40 42 ErrorLevel FUNCT 41 43 HeapSize FUNCT 42 44 Fact FUNCT 43 45 UniformInt FUNCT 44 46 PI FUNCT 45 47 NcpF FUNCT 46 48 NcpCM FUNCT 47 49 Entropy FUNCT 48 50 Sigmoid FUNCT 49 51 log2 FUNCT 50 52 bool_not FUNCT 51 53 bool_and FUNCT 52 54 bool_or FUNCT 53 55 bool_xor FUNCT 54 56 bool_imp FUNCT 55 57 bool_eqv FUNCT 56 58 rel_eq FUNCT 57 59 rel_gt FUNCT 58 60 rel_ge FUNCT 59 61 rel_lt FUNCT 60 62 rel_le FUNCT 61 63 rel_ne FUNCT 62 64 IfThen FUNCT 63 65 rPower FUNCT 64 66 EDist FUNCT 65 67 div FUNCT 66 68 div0 FUNCT 67 69 sllog10 FUNCT 68 70 sqlog10 FUNCT 69 71 slexp FUNCT 70 72 sqexp FUNCT 71 73 slrec FUNCT 72 74 sqrec FUNCT 73 75 cvPower FUNCT 74 76 vcPower FUNCT 75 77 Centropy FUNCT 76 78 Gmillisec FUNCT 77 79 MaxExecError FUNCT 78 80 TimeElapsed FUNCT 79 81 Gamma FUNCT 80 82 LogGamma FUNCT 81 83 Beta FUNCT 82 84 LogBeta FUNCT 83 85 GammaReg FUNCT 84 86 BetaReg FUNCT 85 87 sinh FUNCT 86 88 cosh FUNCT 87 89 tanh FUNCT 88 90 MathLastRC FUNCT 89 91 MathLastEC FUNCT 90 92 MathOVal FUNCT 91 93 SignPower FUNCT 92 94 HandleStatus FUNCT 93 95 NcpVUsin FUNCT 94 96 NcpVUpow FUNCT 95 97 Binomial FUNCT 96 98 HandleSubmit FUNCT 97 99 GamsVersion FUNCT 98 100 HandleDelete FUNCT 99 101 tan FUNCT 100 102 arccos FUNCT 101 103 arcsin FUNCT 102 104 arctan2 FUNCT 103 105 sleep FUNCT 104 106 HeapFree FUNCT 105 107 HandleCollect FUNCT 106 108 GamsRelease FUNCT 107 109 Poly FUNCT 108 110 LicenseStatus FUNCT 109 111 LicenseLevel FUNCT 110 112 HeapLimit FUNCT 111 113 RandLinear FUNCT 112 114 RandTriangle FUNCT 113 115 ForceError FUNCT 114 116 ForceErrorCnt FUNCT 115 117 RandBinomial FUNCT 116 118 JobHandle FUNCT 117 119 JobStatus FUNCT 118 120 JobKill FUNCT 119 121 JobTerminate FUNCT 120 122 NumCores FUNCT 121 123 EmbeddedHandle FUNCT 122 124 PlatformCode FUNCT 123 125 Logit FUNCT 124 126 LSEMax FUNCT 125 127 LSEMaxSc FUNCT 126 128 LSEMin FUNCT 127 129 LSEMinSc FUNCT 128 130 unknown* FUNCT 129 131 SameAs PRED 2 FALSE 0 TRUE FALSE FALSE 0 132 Diag PRED 2 FALSE 0 TRUE FALSE FALSE 0 133 Solvers PRED 1 FALSE 0 TRUE FALSE FALSE 0 134 LicenseCodes PRED 1 FALSE 0 TRUE FALSE FALSE 0 135 SolverCapabilities PRED 2 FALSE 0 TRUE FALSE FALSE 0 136 SortedUels PRED 2 FALSE 0 TRUE FALSE FALSE 0 137 FILE FILE 0 FALSE 0 FALSE FALSE FALSE 0 ENTRY ID TYPE DIM DIM-OK LENGTH MEMORYEST DEFINED ASSIGNED DATAKNOWN ACCESS SPECVAL EXTERN TABLE DOMAIN LAGLEAD 138 i SET 1 TRUE 2 0 MB TRUE FALSE TRUE 0 TRUE FALSE 139 j SET 1 TRUE 3 0 MB TRUE FALSE TRUE 0 TRUE FALSE 140 a PARAM 1 TRUE 2 0 MB TRUE FALSE TRUE 0 FALSE FALSE 141 b PARAM 1 TRUE 3 0 MB TRUE FALSE TRUE 0 FALSE FALSE 142 d PARAM 2 TRUE 6 0 MB TRUE FALSE TRUE 0 FALSE TRUE END OF SYMBOL TABLE DUMP SYMBOL TABLE DUMP (USER SYMBOLS ONLY), NR ENTRIES = 13 ENTRY ID TYPE DIM LENGTH MEMORYEST DEFINED ASSIGNED DATAKNOWN 138 i SET 1 2 0 MB TRUE FALSE TRUE 139 j SET 1 3 0 MB TRUE FALSE TRUE 140 a PARAM 1 2 0 MB TRUE FALSE TRUE 141 b PARAM 1 3 0 MB TRUE FALSE TRUE 142 d PARAM 2 6 0 MB TRUE FALSE TRUE 143 f PARAM 0 1 0 MB TRUE FALSE TRUE 144 c PARAM 2 0 0 MB TRUE TRUE FALSE 145 x VAR 2 0 0 MB FALSE TRUE FALSE 146 z VAR 0 0 0 MB FALSE TRUE FALSE 147 cost EQU 0 0 0 MB FALSE TRUE FALSE 148 supply EQU 1 0 0 MB FALSE TRUE FALSE 149 demand EQU 1 0 0 MB FALSE TRUE FALSE 150 transport MODEL 0 3 TRUE TRUE TRUE END OF SYMBOL TABLE DUMP SYMBOL TABLE DUMP, NR ENTRIES = 150 ENTRY ID TYPE DIM DIM-OK LENGTH MEMORYEST DEFINED ASSIGNED DATAKNOWN ACCESS SPECVAL EXTERN TABLE DOMAIN LAGLEAD 1 mapval FUNCT 0 2 ceil FUNCT 1 3 floor FUNCT 2 4 round FUNCT 3 5 mod FUNCT 4 6 trunc FUNCT 5 7 sign FUNCT 6 8 min FUNCT 7 9 max FUNCT 8 10 sqr FUNCT 9 11 exp FUNCT 10 12 log FUNCT 11 13 log10 FUNCT 12 14 sqrt FUNCT 13 15 abs FUNCT 14 16 cos FUNCT 15 17 sin FUNCT 16 18 arctan FUNCT 17 19 errorf FUNCT 18 20 uniform FUNCT 19 21 normal FUNCT 20 22 power FUNCT 21 23 jdate FUNCT 22 24 jtime FUNCT 23 25 jstart FUNCT 24 26 jnow FUNCT 25 27 execerror FUNCT 26 28 gyear FUNCT 27 29 gmonth FUNCT 28 30 gday FUNCT 29 31 gdow FUNCT 30 32 gleap FUNCT 31 33 ghour FUNCT 32 34 gminute FUNCT 33 35 gsecond FUNCT 34 36 execseed FUNCT 35 37 timestart FUNCT 36 38 timecomp FUNCT 37 39 timeexec FUNCT 38 40 timeclose FUNCT 39 41 frac FUNCT 40 42 ErrorLevel FUNCT 41 43 HeapSize FUNCT 42 44 Fact FUNCT 43 45 UniformInt FUNCT 44 46 PI FUNCT 45 47 NcpF FUNCT 46 48 NcpCM FUNCT 47 49 Entropy FUNCT 48 50 Sigmoid FUNCT 49 51 log2 FUNCT 50 52 bool_not FUNCT 51 53 bool_and FUNCT 52 54 bool_or FUNCT 53 55 bool_xor FUNCT 54 56 bool_imp FUNCT 55 57 bool_eqv FUNCT 56 58 rel_eq FUNCT 57 59 rel_gt FUNCT 58 60 rel_ge FUNCT 59 61 rel_lt FUNCT 60 62 rel_le FUNCT 61 63 rel_ne FUNCT 62 64 IfThen FUNCT 63 65 rPower FUNCT 64 66 EDist FUNCT 65 67 div FUNCT 66 68 div0 FUNCT 67 69 sllog10 FUNCT 68 70 sqlog10 FUNCT 69 71 slexp FUNCT 70 72 sqexp FUNCT 71 73 slrec FUNCT 72 74 sqrec FUNCT 73 75 cvPower FUNCT 74 76 vcPower FUNCT 75 77 Centropy FUNCT 76 78 Gmillisec FUNCT 77 79 MaxExecError FUNCT 78 80 TimeElapsed FUNCT 79 81 Gamma FUNCT 80 82 LogGamma FUNCT 81 83 Beta FUNCT 82 84 LogBeta FUNCT 83 85 GammaReg FUNCT 84 86 BetaReg FUNCT 85 87 sinh FUNCT 86 88 cosh FUNCT 87 89 tanh FUNCT 88 90 MathLastRC FUNCT 89 91 MathLastEC FUNCT 90 92 MathOVal FUNCT 91 93 SignPower FUNCT 92 94 HandleStatus FUNCT 93 95 NcpVUsin FUNCT 94 96 NcpVUpow FUNCT 95 97 Binomial FUNCT 96 98 HandleSubmit FUNCT 97 99 GamsVersion FUNCT 98 100 HandleDelete FUNCT 99 101 tan FUNCT 100 102 arccos FUNCT 101 103 arcsin FUNCT 102 104 arctan2 FUNCT 103 105 sleep FUNCT 104 106 HeapFree FUNCT 105 107 HandleCollect FUNCT 106 108 GamsRelease FUNCT 107 109 Poly FUNCT 108 110 LicenseStatus FUNCT 109 111 LicenseLevel FUNCT 110 112 HeapLimit FUNCT 111 113 RandLinear FUNCT 112 114 RandTriangle FUNCT 113 115 ForceError FUNCT 114 116 ForceErrorCnt FUNCT 115 117 RandBinomial FUNCT 116 118 JobHandle FUNCT 117 119 JobStatus FUNCT 118 120 JobKill FUNCT 119 121 JobTerminate FUNCT 120 122 NumCores FUNCT 121 123 EmbeddedHandle FUNCT 122 124 PlatformCode FUNCT 123 125 Logit FUNCT 124 126 LSEMax FUNCT 125 127 LSEMaxSc FUNCT 126 128 LSEMin FUNCT 127 129 LSEMinSc FUNCT 128 130 unknown* FUNCT 129 131 SameAs PRED 2 FALSE 0 TRUE FALSE FALSE 0 132 Diag PRED 2 FALSE 0 TRUE FALSE FALSE 0 133 Solvers PRED 1 FALSE 0 TRUE FALSE FALSE 0 134 LicenseCodes PRED 1 FALSE 0 TRUE FALSE FALSE 0 135 SolverCapabilities PRED 2 FALSE 0 TRUE FALSE FALSE 0 136 SortedUels PRED 2 FALSE 0 TRUE FALSE FALSE 0 137 FILE FILE 0 FALSE 0 FALSE FALSE FALSE 0 ENTRY ID TYPE DIM DIM-OK LENGTH MEMORYEST DEFINED ASSIGNED DATAKNOWN ACCESS SPECVAL EXTERN TABLE DOMAIN LAGLEAD 138 i SET 1 TRUE 2 0 MB TRUE FALSE TRUE 0 TRUE FALSE 139 j SET 1 TRUE 3 0 MB TRUE FALSE TRUE 0 TRUE FALSE 140 a PARAM 1 TRUE 2 0 MB TRUE FALSE TRUE 0 FALSE FALSE 141 b PARAM 1 TRUE 3 0 MB TRUE FALSE TRUE 0 FALSE FALSE 142 d PARAM 2 TRUE 6 0 MB TRUE FALSE TRUE 0 FALSE TRUE 143 f PARAM 0 TRUE 1 0 MB TRUE FALSE TRUE 0 FALSE INPUT FALSE 144 c PARAM 2 TRUE 6 0 MB TRUE TRUE FALSE 0 FALSE FALSE 145 x VAR 2 TRUE 6 0 MB FALSE TRUE FALSE 0 146 z VAR 0 TRUE 0 0 MB FALSE TRUE FALSE 0 147 cost EQU 0 TRUE 1 0 MB FALSE TRUE FALSE 0 148 supply EQU 1 TRUE 2 0 MB FALSE TRUE FALSE 0 149 demand EQU 1 TRUE 3 0 MB FALSE TRUE FALSE 0 150 transport MODEL 0 TRUE 3 TRUE TRUE TRUE 0 END OF SYMBOL TABLE DUMP $offEcho $call.checkErrorLevel gams t.gms lo=%gams.lo% $call.checkErrorLevel awk "/SYMBOL TABLE DUMP/,/END OF SYMBOL TABLE DUMP/" t.lst | awk "sub(/ *$/, \"\")" > tHave.txt $call.checkErrorLevel diff tHave.txt tWant.txt