목차
메가 슬롯 프로그램을 다른 프로그램(예: C#, Java, Python 등)에 삽입하는 가장 편리한 방법은 다음 중 하나를 사용하는 것입니다.API메가 슬롯에. 훨씬 간단하지만 덜 강력한 방법은 메가 슬롯 실행 파일을 호출하는 것입니다(메가 슬롯exe(Windows) 또는게임(Unix))를 프로그램의 적절한 매개변수로 바꿉니다. 언어와 운영 체제에 따라 이러한 작업을 수행하는 방법도 다릅니다. 메가 슬롯 프로그램에서 호출자 프로그램으로 작은 정보를 전달하는 일반적인 방법은 다음과 같습니다.출구 상태또는반환 코드(예를 참조하세요.https://en.wikipedia.org/wiki/Exit_status). 메가 슬롯 반환 코드를 통해 호출자는 완료된 메가 슬롯 작업 상태에 대한 일부 정보를 얻을 수 있습니다. 반환 코드는 메가 슬롯 작업 내부의 모델에 대한 정보를 제공하지 않습니다. 모델이 실행 불가능하거나 다른 방식으로 실패했을 수 있지만 반환 코드에는 모든 것이 정상이라고 표시되어 있습니다. 실제로 메가 슬롯 작업에는 여러 개의 해결이 있을 수 있으므로 개념적으로도 반환이 불가능합니다.솔루션 상태 코드반환 코드에 있습니다. 사용자는 반환 코드를 명시적으로 설정할 수 없지만 작업을 트리거할 수 있습니다(예:'중지' 중단;22539_22587실행 오류 (3)).
- 참고
- 일반적으로 반환 코드의 0 값은 성공을 나타내고 0이 아닌 값은 실패를 나타냅니다.
먼저 설명이 쉬운 예를 통해 메가 슬롯 내에서 반환 코드에 액세스하는 방법을 설명한 다음 모든 반환 코드를 나열합니다. 메가 슬롯에는 다음을 통해 다른 프로그램을 호출할 수 있는 기능이 있습니다.$call(컴파일 시간) 및실행(실행 시간) 명령. 당연히 메가 슬롯는 재귀적인 방식으로 메가 슬롯를 호출할 수 있습니다. 이러한 하위 메가 슬롯 작업의 반환 코드에 액세스하는 방법에는 여러 가지가 있습니다.
$onecho > x.gms
/1,2,3/을 설정합니다.
$offecho
* 값을 반환하기 위해 내부 컴파일 시간 액세스
* 0이 아닌 반환 코드의 예
$call 메가 슬롯 x.gms lo=0 this_causes_a_parameter_error_with_return_code_6=1 > %system.nullfile%
* if [not] errorlevel n을 통해 반환 코드를 확인하세요.
$errorlevel 1이 아닌 경우 $abort는 errorlevel >= 1을 예상합니다.
* errorLevel 함수의 함수 값으로 반환 코드에 액세스합니다.
$eval MYERRORLEVEL 오류 수준
$로그 %MYERRORLEVEL%
* 0 반환 코드의 예
$call 메가 슬롯 x.gms lo=0 > %system.nullfile%
* if [not] errorlevel n을 통해 반환 코드를 확인하세요.
$if errorlevel 1 $abort 오류 수준 <= 0 예상
* errorLevel 함수의 함수 값으로 반환 코드에 액세스합니다.
$eval MYERRORLEVEL 오류 수준
$로그 %MYERRORLEVEL%
* 런타임
* 0이 아닌 반환 코드의 예
'메가 슬롯 x.gms lo=0 this_causes_a_parameter_error_with_return_code_6=1 > %system.nullfile%'을 실행합니다.
* errorLevel 함수의 함수 값으로 반환 코드에 액세스합니다.
스칼라 myerrorlevel;
myerrorlevel = 오류레벨;
표시 '6이어야 합니다:', myerrorlevel;
* 0 반환 코드의 예
'메가 슬롯 x.gms lo=0 > %system.nullfile%'을 실행합니다.
* errorLevel 함수의 함수 값으로 반환 코드에 액세스합니다.
myerrorlevel = 오류레벨;
표시 '0이어야 합니다:', myerrorlevel;
명령줄 해석기 또는 쉘은 작업 제어를 위한 강력한 방법이며 자연스럽게 메가 슬롯 작업도 실행할 수 있습니다. 다음은 이러한 환경에서 메가 슬롯의 반환 코드에 액세스(실제로 에코)하는 방법을 보여주는 두 가지 예입니다.
유닉스 쉘(예:배시):
$ 메가 슬롯 mymodel ... $ 에코 $?
여기$?은 마지막 실행의 반환 코드를 저장하는 환경 변수입니다.
윈도우 (cmd.exe):
C:\tmp> 메가 슬롯 mymodel ... C:\tmp> 에코 %errorlevel%
여기%errorlevel%은 마지막 실행의 반환 코드를 저장하는 환경 변수입니다.
- 참고
- UNIX에서 반환 코드는 모듈로 256으로 처리되므로 반환 코드 400은 Unix에서 144가 됩니다. 반환 코드와 다른 경우 반환 코드 모듈로 256이 표의 괄호 안에 표시됩니다.
오류/반환 코드 목록
다음 표는 메가 슬롯 반환 코드 목록을 제공합니다:
| 반환 코드 | 설명 |
|---|---|
| 0 | 정상 복귀 |
| 1 | 솔버가 호출됩니다. 시스템은 이 숫자를 반환해서는 안 됩니다. |
| 2 | 컴파일 오류가 발생했습니다 |
| 3 | 실행 오류가 발생했습니다. |
| 4 | 시스템 한계에 도달했습니다. |
| 5 | 파일 오류가 발생했습니다 |
| 6 | 매개변수 오류가 발생했습니다. |
| 7 | 라이센스 오류가 발생했습니다. |
| 8 | 메가 슬롯 시스템 오류가 발생했습니다. |
| 9 | 메가 슬롯를 시작할 수 없습니다. |
| 10 | 메모리 부족 |
| 11 | 디스크 부족 |
| 109 | 프로세스/스크래치 디렉터리를 생성할 수 없습니다. |
| 110 | 프로세스/스크래치 디렉터리가 너무 많습니다. |
| 112 | 프로세스/스크래치 디렉터리를 삭제할 수 없습니다. |
| 113 | 스크립트를 작성할 수 없습니다.gamsnext |
| 114 | 다음을 쓸 수 없습니다.매개변수파일 |
| 115 | 환경 변수를 읽을 수 없습니다. |
| 400 (144) | 메가 슬롯 언어 컴파일러를 생성할 수 없습니다. (gamscmex) |
| 401 (145) | 현재 디렉토리 (커디르)이 존재하지 않습니다. |
| 402 (146) | 현재 디렉토리를 설정할 수 없습니다(커디르) |
| 404 (148) | 시스템 디렉토리가 비어 있음(UNIX에만 해당) |
| 405 (149) | 현재 디렉토리가 비어 있음(UNIX 전용) |
| 406 (150) | 스크래치 확장에서 공백(스크렉스) |
| 407 (151) | 예상치 못한cmexRC |
| 408 (152) | 프로세스 디렉토리를 찾을 수 없습니다(procdir) |
| 409 (153) | CMEX 라이브러리를 찾을 수 없음(실험적) |
| 410 (154) | CMEX 라이브러리의 진입점을 찾을 수 없습니다(실험적) |
| 411 (155) | 프로세스 디렉토리가 비어 있음(UNIX에만 해당) |
| 412 (156) | 스크래치 디렉토리가 비어 있음(UNIX에만 해당) |
| 909 (141) | 경로를 추가할 수 없음 / 알 수 없는 UNIX 환경 / 환경 변수를 설정할 수 없음 |
| 1000 (232) | 드라이버 오류: 올바르지 않음명령줄 매개변수for게임 |
| 2000 (208) | 드라이버 오류: 내부 오류: 인터럽트 핸들러를 설치할 수 없습니다. |
| 3000 (184) | 드라이버 오류: 현재 디렉토리를 가져오는 데 문제가 있습니다. |
| 4000 (160) | 드라이버 오류: 내부 오류: 메가 슬롯 컴파일 및 실행 모듈을 찾을 수 없습니다. |
| 5000 (126) | 드라이버 오류: 내부 오류: 옵션 처리 라이브러리를 로드할 수 없습니다. |
현재 디렉토리를 Microsoft UNC 형식으로 지정하면 오류 3000이 발생하는 경우가 있습니다. 100보다 작은 반환 코드는 메가 슬롯 컴파일러 및 실행 시스템에서 나옵니다(gamscmex) 100 이상의 코드는 메가 슬롯 드라이버 프로그램(게임).