문제

나는 "Hello World"를 작업 로그에 인쇄하기 위해 Metal C와 함께 WTO 명령을 사용하려고 노력하고 있습니다. 이는 Z/OS V1R10.0 금속 C 프로그래밍 안내서의 1.2.3.5 절의 예제를 기반으로합니다. 참조 WTO를 사용하는 경우 0 또는 ASCII에서 EBCDIC 변환을 포함하는 버퍼에 문제가있는 경우 나타납니다. 아래에 작업 로그의 관련 섹션을 붙여서 코드를 따라 코드를 한 다음 컴파일 할 수없는 IBM 예제의 코드를 붙였습니다. 작업 로그

09.01.56 J0686275  IEF403I IMIJWS0G - STARTED - TIME=09.01.56
 09.01.56 J0686275  +...0.......
 09.01.56 J0686275  -                                         --TIMINGS (MINS.)--            ----PAGING COUNTS---
09.01.56 J0686275  -IMIJWS0G          GO          00      6    .00    .00    .00   1292   0      0      0      0     0     1
 09.01.56 J0686275  IEF404I IMIJWS0G - ENDED - TIME=09.01.56

내 코드

#include 
#include 
#include 
 int main()
 {
                                    struct WTO_PARM {
               unsigned short len;
               unsigned short code;
               char* text;
            } wto_buff = { 4+11, 0, "hello world" };
            __asm( " WTO  MF=(E,(%0)) " : : "r"(&wto_buff));

        }

IBM 코드

int main() {

            struct WTO_PARM {
               unsigned short len;
               unsigned short code;
               char text[80];            } wto_buff = { 4+11, 0, "hello world" };            __asm( " WTO  MF=(E,(%0)) " : : "r"(&wto_buff));
            return 0;
        }
도움이 되었습니까?

해결책

IBM 예제는 (Z/OS 1.9에 따라) 나에게 효과가 있었지만 코드마를 설정하기 위해 Pragma를 추가해야했습니다. 숯 텍스트에서 [80]; 나는 Char Text [80]을 Char *텍스트로 변경하려고했지만 당신과 같은 이상한 결과를 얻었습니다.

다른 팁

아마도 두 버전의 구조물을 기억하는 레이아웃이 동일하지 않습니까? 나는 이것을 GCC에서 시도했다 :

#include <stdio.h>

struct WTO_PARM {
    unsigned short len;
    unsigned short code;
    char *text;
};

int main()
{
    struct WTO_PARM moo = { 4+11,0,"hello" };
    printf("size %zu struct %p string %p\n", sizeof(struct WTO_PARM),&moo,moo.text);
    return 0;
}

결과는 다음과 같습니다.

size 8 struct 0x22cce0 string 0x402000

그러나 텍스트 매개 변수의 유형을 Char [80]로 변경하면 결과가 변경됩니다.

size 84 struct 0x22cc80 string 0x22cc84

WTO 명령은 문자열이 해당 구조물에 바로 포장 될 것으로 예상합니다.

왜 IBM 샘플을 컴파일 할 수 없습니까? 그것은 나에게 잘 작동합니다 - 아마도 당신은 우리에게 컴파일러 파름과 오류 메시지를 보여줄 수 있습니까?

TN3270 클라이언트를 통해 코드를 편집합니까? 문제가 에뮬레이터의 코드 페이지와 관련이있을 가능성이 높습니다. 예를 들어 ISPF에서 다음과 같은 변경을해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top