簡體   English   中英

使用WTO在Metal C中打印

[英]using WTO to print from with in Metal C

我正在嘗試使用來自Metal C的WTO指令將“Hello World”打印到我的工作日志中。 這是基於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來設置代碼頁:在示例的頂部:#pragma filetag(“IBM-500”)編譯器不接受[和]在char文本[80]; 我試圖將char文本[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

但是,如果我將text參數的類型更改為char [80],結果將更改為:

size 84 struct 0x22cc80 string 0x22cc84

WTO指令可能希望將字符串直接打包到該結構中。

你是否通過TN3270客戶端編輯代碼? 問題很可能與模擬器中的代碼頁有關。 例如,我需要在ISPF中進行以下更改:c x'4A'x'AD'all(for [)和c x'5A'x'BD'(for])以編譯源代碼...

為什么不能編譯IBM樣本? 它對我來說很好 - 也許您可以向我們展示您的編譯器參數和錯誤消息?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM