如何在Transaction Application Language(TAL)中向终端输出INT类型数据
在Guardian的TAL中输出INT类型数据
要在TAL中向终端输出INT类型数据,核心是先把整数转换为字符串——因为WRITE系统调用仅支持输出字符/字符串类型的数据。TAL提供了内置的ITOSTR(Integer to String)函数来完成整数到字符串的转换,以下是具体实现步骤和修正后的代码:
实现步骤
- 定义要输出的INT变量并赋值
- 使用
ITOSTR将整数转换为字符串,存入预先声明的STRING缓冲区
- 使用
- 获取转换后的字符串长度,调用
WRITE输出到终端
- 获取转换后的字符串长度,调用
- 修正原代码中
CLOSE调用的参数错误(原代码用了未定义的out_file_number,应改为filename)
- 修正原代码中
完整示例代码
?NOLIST,SOURCE $SYSTEM.SYSTEM.EXTDECS (CLOSE, INITIALIZER OPEN,WRITE,MYTERM) ?LIST PROC myproc MAIN; BEGIN INT termname[0:11]; INT filename; STRING buffer [0:79]; INT my_num := 12345; // 定义要输出的整数 INT str_len; // 存储转换后的字符串长度 CALL INITIALIZER; CALL MYTERM (termname); CALL OPEN (termname, filename); // 将整数转换为字符串 str_len := ITOSTR(my_num, buffer, LENGTH(buffer)); // 输出转换后的字符串 CALL WRITE(filename, buffer, str_len); CALL CLOSE(filename); // 修正原代码的参数错误 END;
关键说明
ITOSTR函数参数:- 第一个参数是要转换的INT变量
- 第二个参数是存储结果的STRING缓冲区
- 第三个参数是缓冲区的最大长度(用
LENGTH(buffer)获取缓冲区总长度)
- 函数返回值是转换后实际写入缓冲区的字符数,直接传给
WRITE的第三个参数即可,避免输出多余的空字符
内容的提问来源于stack exchange,提问作者Dodande
相关产品推荐
相关产品推荐

