gdxxrw12.gms : GDXXRW - SkipEmpty 및 cMerge 옵션 테스트

설명

처음에는 다음을 사용하여 빈 행이나 열이 있는 데이터를 읽을 때의 결과입니다.
SkipEmpty 옵션은 소규모 데이터 세트에 대해 제어됩니다. 그 후, SkipEmpty는
cMerge의 다양한 값에 대해 병합된 Excel 범위를 사용하여 데이터를 테스트했습니다.

기고자: Jan-Erik Justkowiak, 2018년 9월

소형 모델 유형 :슬롯 머신


카테고리 : 슬롯 머신 테스트 라이브러리


메인 파일 : gdxxrw12.gms

$title GDXXRW - SkipEmpty 및 cMerge 옵션 테스트(GDXXRW12,SEQ=781)

$onText
처음에는 빈 행이나 열이 있는 데이터를 읽을 때의 결과입니다.
SkipEmpty 옵션은 소규모 데이터 세트에 대해 제어됩니다. 그 후, SkipEmpty는
cMerge의 다양한 값에 대해 병합된 Excel 범위를 사용하여 데이터를 테스트했습니다.

기고자: Jan-Erik Justkowiak, 2018년 9월
$offText

$callTool win32.msappavail Excel
$if errorlevel 1 $abort.noError "사용 가능한 Excel이 없습니다."

* 예상되는 결과
$onEcho > createControlData.gms
세트
   나는 / a, b, c, d, e /
   j / I, II, III, IV, V /;

매개변수
   block_0(i,j) / a.I 1, a.II 2, a.III 3, a.IV 4, a.V 5
                  b.I 6, b.II 7, b.III 8, b.IV 9, b.V 10
                  c.I 11, c.II 12, c.III 13, c.IV 14, c.V 15
                  d.I 16, d.II 17, d.III 18, d.IV 19, d.V 20
                  e.I 21, e.II 22, e.III 23, e.IV 24, e.V 25 /
   block_1(i,j), block_2(i,j), block_3(i,j), block_4(i,j)
   leftCorner_0(i,j), leftCorner_1(i,j), leftCorner_2(i,j), leftCorner_3(i,j), leftCorner_4(i,j), leftCorner_78542(i,j);;

block_1(i,j) = block_0(i,j);
block_2(i,j) = block_0(i,j);
block_3(i,j) = block_0(i,j);
block_4(i,j) = block_0(i,j);
Execute_unload 'blockControl.gdx' block_0 block_1 block_2 block_3 block_4;

leftCorner_0(i,j)$(ord(i)<=1 및 ord(j)<=1) = block_0(i,j);
leftCorner_1(i,j)$(ord(i)<=2 ​​및 ord(j)<=2) = block_0(i,j);
leftCorner_2(i,j)$(ord(i)<=3 및 ord(j)<=3) = block_0(i,j);
leftCorner_3(i,j)$(ord(i)<=4 및 ord(j)<=4) = block_0(i,j);
leftCorner_4(i,j)$(ord(i)<=5 및 ord(j)<=5) = block_0(i,j);
leftCorner_78542(i,j)$(ord(i)<=5 and ord(j)<=5) = block_0(i,j);

Execute_unload 'leftCornerControl.gdx' leftCorner_0 leftCorner_1 leftCorner_2 leftCorner_3 leftCorner_4 leftCorner_78542
$offEcho

$call 슬롯 머신 createControlData.gms lo=%슬롯 머신lo%
$ifE errorLevel<>0 $abort createControlData 호출 중 오류가 발생했습니다!
*------------------------------------------------------------------

* 빈 행과 열(및 일부 노이즈 데이터)이 있는 간단한 매개변수를 읽습니다.
* 블록 범위 지정을 사용하여 범위를 지정한 경우
* SkipEmpty는 무시됩니다.
$onEcho >howToRead.txt
SkipEmpty=0 par=block_0 rng=A1:P16 rDim=1 cDim=1
SkipEmpty=1 par=block_1 rng=A1:P16 rDim=1 cDim=1
SkipEmpty=2 par=block_2 rng=A1:P16 rDim=1 cDim=1
SkipEmpty=3 par=block_3 rng=A1:P16 rDim=1 cDim=1
SkipEmpty=4 par=block_4 rng=A1:P16 rDim=1 cDim=1
$offEcho

$call gdxxrw SkipEmpty_cMerge.xlsx 출력=blockResults.gdx @howToRead.txt 추적=0
$ifE errorLevel<>0 $abort 블록 범위 지정을 사용하여 SkipEmpty를 읽는 동안 오류가 발생했습니다!

* 데이터를 확인하세요
$call gdxdiff blockControl.gdx blockResults.gdx > %system.nullfile%
$ifE errorLevel<>0 $abort 데이터가 올바르지 않습니다(블록 범위 지정 시 비어 있음 건너뛰기)!

* 왼쪽 상단 사양 사용
$onEcho >howToRead.txt
SkipEmpty=0 par=leftCorner_0 rng=A1 rDim=1 cDim=1
SkipEmpty=1 par=leftCorner_1 rng=A1 rDim=1 cDim=1
SkipEmpty=2 par=leftCorner_2 rng=A1 rDim=1 cDim=1
SkipEmpty=3 par=leftCorner_3 rng=A1 rDim=1 cDim=1
SkipEmpty=4 par=leftCorner_4 rng=A1 rDim=1 cDim=1
* 임의의 큰 정수(시트에 더 이상 데이터가 없음)
SkipEmpty=78542 par=leftCorner_78542 rng=A1 rDim=1 cDim=1
$offEcho

$call gdxxrw SkipEmpty_cMerge.xlsx 출력=leftCornerResults.gdx @howToRead.txt 추적=0
$ifE errorLevel<>0 $abort 왼쪽 상단 사양을 사용하여 SkipEmpty를 읽는 동안 오류가 발생했습니다!

* 데이터를 확인하세요
$call gdxdiff leftCornerControl.gdx leftCornerResults.gdx > %system.nullfile%
$ifE errorLevel<>0 $abort 데이터가 올바르지 않습니다(왼쪽 상단 범위 지정으로 비어 있음 건너뛰기)!
*------------------------------------------------------------------

* SkipEmpty 옵션을 사용하는 동안 Excel 범위가 병합된 세트를 읽습니다.
$onEcho >howToRead.txt
SkipEmpty=0 cMerge=0 set=i0_0 rng=Sheet2!A1 cDim=1
SkipEmpty=1 cMerge=0 set=i1_0 rng=Sheet2!A1 cDim=1
SkipEmpty=2 cMerge=0 set=i2_0 rng=Sheet2!A1 cDim=1
SkipEmpty=0 cMerge=1 set=i0_1 rng=Sheet2!A1 cDim=1
SkipEmpty=1 cMerge=1 set=i1_1 rng=Sheet2!A1 cDim=1
SkipEmpty=2 cMerge=1 set=i2_1 rng=Sheet2!A1 cDim=1
$offEcho

$call gdxxrw SkipEmpty_cMerge.xlsx maxDupeErrors=18 @howToRead.txt 추적=0
$ifE errorLevel<>0 $abort SkipEmpty 옵션을 사용하는 동안 병합된 Excel 범위로 설정된 읽기 오류가 발생했습니다!

* 예상되는 결과
세트
   i0_0 / a, b /
   i1_0 / a, b, c /
   i2_0 / a, b, c, d /
   i0_1 / a, b, c, d /
   i1_1 / a, b, c, d /
   i2_1 / a, b, c, d /;

$gdxOut SkipEmpty_cMergeControl.gdx
$unLoad i0_0 i1_0 i2_0 i0_1 i1_1 i2_1
$gdx아웃

* 데이터를 확인하세요
$call gdxdiff SkipEmpty_cMergeControl.gdx SkipEmpty_cMerge.gdx > %system.nullfile%
$ifE errorLevel<>0 $abort 데이터가 올바르지 않습니다(skipEmpty 옵션을 사용하는 동안 병합된 Excel 범위로 집합을 읽은 후)!