put11.gms : 파일 핸들이 없는 슬롯 사이트 추천

설명

슬롯 사이트 추천 25.0 이전에는 Put_Utility 문에 열린 파일 핸들이 필요했습니다. 이
테스트를 통해 다른 유틸리티가 유틸리티 없이도 작동하는지 확인합니다.

기고자: Lutz Westermann, 2017년 12월

소형 모델 유형 :슬롯 사이트 추천


카테고리 : 슬롯 사이트 추천 테스트 라이브러리


메인 슬롯 사이트 추천 : put11.슬롯 사이트 추천

$title Put_Utility 파일 핸들 없음(PUT11,SEQ=741)

$onText
GAMS 25.0 이전에는 Put_Utility 문에 열린 파일 핸들이 필요했습니다. 이
테스트를 통해 다른 유틸리티가 유틸리티 없이도 작동하는지 확인합니다.

기고자: Lutz Westermann, 2017년 12월
$offText

$call rm -f dummy.txt shell.txt mySave.g00 myxSave.g00

put_utility 'exec' / 'touch dummy.txt';
'=test -e dummy.txt'를 실행합니다.
abort$(errorlevel) '"exec"에 문제가 있습니다';

$echo 쉘 > shellWant.txt
put_utility 'shell' / 'echo shell > shell.txt';
"diff -bw shellWant.txt shell.txt"를 실행합니다.
abort$(errorlevel) '"쉘"에 문제가 있습니다';

put_utility '저장' / 'mySave';
'=test -e mySave.g00'을 실행합니다.
abort$(errorlevel) '"저장"에 문제가 있습니다';

put_utility 'xsave' / 'myxSave';
'=test -e myxSave.g00'을 실행합니다.
abort$(errorlevel) '"xsave"에 문제가 있습니다';

j / 2005*2007 / 설정;
매개변수 무작위(j) ;
스칼라 랜덤 ;

루프(j,
   put_utility 'gdxOut' / 'data' j.tl:0;
   무작위 = 균일(0,1);
   무작위(j) = 무작위;
   Execute_unload 무작위;
);

루프(j,
   put_utility 'gdxIn' / 'data' j.tl:0 ;
   Execute_load 무작위;
   abort$(randoms(j)<>random) '"gdxout/gdxin" 문제';
);

* 정확성을 테스트하기는 어렵습니다. 충돌이 없는지 확인하세요.
put_utility '클릭' / 'shell.txt' ;
put_utility 'log' / '안녕 로그!';
put_utility 'msg' / '안녕하세요!';
put_utility 'msgLog' / '안녕하세요 lstlog!';
put_utility '제목' / '새 제목';
* putPW의 기본값은 꽤 높습니다. 이렇게 하면 이것이 실제로 작동하고 기본 기본값인 255가 적용되지 않습니다.
put_utility '로그' / '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'
                    '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'
                    '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789';
$ifI가 %system.fileSys%==UNIX가 아닌 경우
   put_utility 'winMsg' / '새 제목' / "일부 메시지";

abort$(execerror<>0) '여기까지는 오류가 없어야 합니다.';

* 실제로는 열린 파일 핸들이 필요하지만 put_utility 자체가 아니라 수행되는 작업에 필요합니다.
put_utility 'ren' / 'one.txt';
abort$(execerror=0) '이 "ren"은 실패했어야 했습니다.';
실행 오류 = 0;

put_utility 'inc' / 'external.txt' ;
abort$(execerror=0) '이 "inc"는 실패했어야 합니다.';
실행 오류 = 0;

put_utility 'incMsg' / 'externalX.txt' ;
abort$(execerror=0) '이 "incMsg"는 실패했어야 합니다.';
실행 오류 = 0;

put_utility 'incLog' / 'externalX.txt' ;
abort$(execerror=0) '이 "incLog"는 실패했어야 합니다.';
실행 오류 = 0;

put_utility 'incMsgLog' / 'externalX.txt' ;
abort$(execerror=0) '이 "incMsgLog"는 실패했어야 합니다.';
실행 오류 = 0;

slv / cplex, conopt / 설정;
변수 v;방정식 e; e..v=e=0; 모델 m /e/;
루프(slv,
   put_utility 'solver' / 'lp' / slv.tl:0;
   m us lp min v를 푼다;
   if (sameas(slv,'cplex'),
      put_utility 'shell' / 'echo "' system.SString '" | grep CPLEX > %system.nullFile%';
   그렇지 않으면
      put_utility 'shell' / 'echo "' system.SString '" | grep CONOPT > %system.nullFile%';
   );
   abort$errorlevel '요청된 해결자 이름이 감사 문자열에 없습니다';   
);

싱글턴 세트 someText / 1 /;
put_utility 'signText' / 'someText' / '라벨에 일부 텍스트를 할당합니다.';
put_utility 'shell' / 'echo "' someText.te(someText) '" | grep "레이블에 일부 텍스트를 할당합니다." > %system.nullFile%';
abort$errorlevel '예상된 텍스트와 저장된 텍스트가 다릅니다.';

put_utility 'setenv' / 'SOMETEXT' / '환경 변수에 일부 텍스트를 할당합니다';
put_utility 'shell.checkErrorLevel' / 'echo "' sysEnv.SOMETEXT '" | grep "환경 변수에 일부 텍스트를 할당합니다." > %system.nullFile%';
put_utility 'dropenv' / 'SOMETEXT';
* stringChk=0으로 가정합니다.
put_utility 'shell.checkErrorLevel' / 'echo "' sysEnv.SOMETEXT '" | grep "sysEnv.SOMETEXT" > %system.nullFile%';

$echo 제로 > zeroWant.txt
$echo one > oneWant.txt
파일 fx /'zero.txt'/; putclose fx '제로';
put_utility 'ren' / 'one.txt'; putclose '하나';
"diff -bw zeroWant.txt zero.txt"를 실행합니다.
abort$(errorlevel) '"ren zero" 문제';
"diff -bw oneWant.txt one.txt"를 실행합니다.
abort$(errorlevel) '"ren one" 문제';

$echo 여기에는 외부 파일의 콘텐츠가 포함됩니다. > includeWant.txt
$echo 나는 외부 콘텐츠입니다 >> includeWant.txt
$echo 나는 외부 콘텐츠입니다 > external.txt
put_utility 'ren' / 'included.txt';
put "여기에는 외부 파일의 콘텐츠가 포함됩니다:";
put_utility 'inc' / 'external.txt' ; 닫다;
"diff -bw includeWant.txt include.txt"를 실행합니다.
abort$(errorlevel) '"inc" 문제';

* 25.0.1에는 버그가 있어 이 작업이 실패했습니다.
파일 f1, f2;
f1 '1'을 넣으십시오;
f2 '2'를 넣으십시오;
put_utility f1 '로그' / '3';

* 25.0.2에는 버그가 있어 이 작업이 실패했습니다.
$echo trnsport > trnsportWant.txt
파일 fy /'trnsport.txt'/; fy.lCase = 1;

싱글톤 세트 s / TRNSPORT /;
put_utility fy 'log' / s.tl:0;
putClose s.tl:0;
"diff -bw trnsportWant.txt trnsport.txt"를 실행합니다.
abort$(errorlevel) '"Trnsport lCase" 문제';

$onEchoV > inclogmsg.gms
파일 리콜 /recall.txt/;
putclose "나는 외부 콘텐츠입니다."를 회상합니다. / "한 줄 이상 넘어가요.";

'포함 전에'를 표시합니다.
put_utility 'inc%cmd%' / 'recall.txt' ;
'포함 후'를 표시합니다.
$offEcho
$onEchoV > inclogmsgWant.txt
--- 파일call.txt 포함 시작
나는 외부 콘텐츠입니다.
나는 한 줄 이상을 다룹니다.
---call.txt 파일 포함 끝
$offEcho

Execute.checkErrorLevel "gams inclogmsg.gms --cmd=log lo=2"
execute.checkErrorLevel 'awk "/recall.txt 파일 포함 시작/,/recall.txt 파일 포함 끝/" inclogmsg.lst > inclogmsgHave.txt';
'diff -bw inclogmsgHave.txt inclogmsgWant.txt > %system.nullfile%'를 실행합니다.
abort$(not errorlevel) 'inclogmsg 케이스 로그에 문제가 있습니다(lst)';
execute.checkErrorLevel 'awk "/recall.txt 파일 포함 시작/,/recall.txt 파일 포함 끝/" inclogmsg.log > inclogmsgHave.txt';
'diff -bw inclogmsgHave.txt inclogmsgWant.txt > %system.nullfile%'를 실행합니다.
abort$(errorlevel) 'inclogmsg 케이스 로그(로그)에 문제가 있습니다.';
Execute.checkErrorLevel "gams inclogmsg.gms --cmd=msg lo=2"
execute.checkErrorLevel 'awk "/recall.txt 파일 포함 시작/,/recall.txt 파일 포함 끝/" inclogmsg.lst > inclogmsgHave.txt';
'diff -bw inclogmsgHave.txt inclogmsgWant.txt > %system.nullfile%'를 실행합니다.
abort$(errorlevel) 'inclogmsg 케이스 msg에 문제가 있습니다(lst)';
execute.checkErrorLevel 'awk "/recall.txt 파일 포함 시작/,/recall.txt 파일 포함 끝/" inclogmsg.log > inclogmsgHave.txt';
'diff -bw inclogmsgHave.txt inclogmsgWant.txt > %system.nullfile%'를 실행합니다.
abort$(errorlevel 아님) 'inclogmsg 케이스 msg(로그)에 문제가 있습니다.';
Execute.checkErrorLevel "gams inclogmsg.gms --cmd=msglog lo=2"
execute.checkErrorLevel 'awk "/recall.txt 파일 포함 시작/,/recall.txt 파일 포함 끝/" inclogmsg.lst > inclogmsgHave.txt';
'diff -bw inclogmsgHave.txt inclogmsgWant.txt > %system.nullfile%'를 실행합니다.
abort$(errorlevel) 'inclogmsg 케이스 msglog(lst) 관련 문제';
execute.checkErrorLevel 'awk "/recall.txt 파일 포함 시작/,/recall.txt 파일 포함 끝/" inclogmsg.log > inclogmsgHave.txt';
'diff -bw inclogmsgHave.txt inclogmsgWant.txt > %system.nullfile%'를 실행합니다.
abort$(errorlevel) 'inclogmsg 케이스 msglog(로그) 문제';

* stdOut 및 stderr 테스트
$onEchoV > 슬롯 사이트 추천gms
put_utility 'std%outOrErr%' / '테스트문자열';
$offEcho
$echo 테스트 문자열 > 예상.txt
$call gams 슬롯 사이트 추천gms lo=0 --outOrErr=out > test.txt
$call.checkErrorLevel diff -q 예상.txt test.txt
$call gams 슬롯 사이트 추천gms lo=0 --outOrErr=err 2> test.txt
$call.checkErrorLevel diff -q 예상.txt test.txt