on strz pl/1 怎么使用
时间: 2024-01-09 14:04:08 浏览: 25
在 PL/1 中,ON STRZ 是一个异常处理语句,用于处理字符串操作时的空指针异常。当程序执行字符串操作时,如果操作的字符串指针为 NULL,则会发生空指针异常。为避免程序因此而崩溃,可以使用 ON STRZ 语句来捕获并处理这个异常。
以下是一个使用 ON STRZ 语句的示例:
```
DCL STR CHAR(20);
DCL SUBSTR CHAR(10);
STR = 'Hello, world!';
ON STRZ;
SUBSTR = SUBSTR(STR, 100, 10);
PUT SKIP LIST ('SUBSTR = ', SUBSTR);
END;
```
在这个例子中,将 STR 赋值为 'Hello, world!',然后使用 SUBSTR 函数从 STR 中截取子字符串。由于截取的起始位置超出了字符串的长度,会发生空指针异常。但是由于设置了 ON STRZ 语句,程序会在发生异常时跳转到 ON STRZ 语句中,并执行其中的代码,这里是将 SUBSTR 的值设置为 ''。最后输出 SUBSTR 的值,可以看到 SUBSTR 的值确实被设置为了空字符串,而不是崩溃退出程序。
需要注意的是,在使用 ON STRZ 语句时,必须确保在语句中处理异常,否则程序仍然会崩溃退出。同时,在进行字符串操作时,需要确保操作的字符串指针不为 NULL,否则会发生空指针异常。
相关问题
ON STRZ PL/1 怎么使用
ON STRZ是PL/1语言中的一个关键字,用于在字符串中查找子字符串并返回其位置。使用ON STRZ的基本语法如下:
```
ON STRZ(substring, string) LABEL(label);
```
其中,substring是要查找的子字符串,string是要搜索的字符串,label是一个可选的标签,用于指定搜索成功时跳转到的位置。
例如,以下代码使用ON STRZ查找字符串"hello"在字符串"hello world"中的位置:
```
DCL 1 string CHAR(20) INIT('hello world');
DCL 1 pos FIXED BIN(31);
ON STRZ('hello', string) LABEL(found);
pos = 0;
PUT SKIP LIST 'Substring not found';
GO TO end;
found:
pos = STRPOS(string, substring);
PUT SKIP LIST 'Substring found at position ' pos;
end:
```
在这个例子中,程序首先定义了一个20个字符长度的字符串变量string,并将其初始化为"hello world"。然后,程序使用ON STRZ查找字符串"hello"在string中的位置,并将结果存储在pos变量中。如果搜索成功,则程序跳转到标签found处,输出子字符串在字符串中的位置;否则,程序输出"Substring not found"。最后,程序跳转到标签end处,结束执行。
需要注意的是,ON STRZ语句只能在PL/1程序中使用,不能在JCL或其他上下文中使用。另外,在使用ON STRZ时,需要保证substring和string变量的长度正确,否则可能会导致搜索失败或返回错误的位置。
ON STRZ; PL/1 怎么使用
ON STRZ是PL/1语言中的一个关键字,用于在字符串中查找子字符串并返回其位置。使用ON STRZ的基本语法如下:
```
ON STRZ(substring, string) LABEL(label);
```
其中,substring是要查找的子字符串,string是要搜索的字符串,label是一个可选的标签,用于指定搜索成功时跳转到的位置。
例如,以下代码使用ON STRZ查找字符串"hello"在字符串"hello world"中的位置:
```
DCL 1 string CHAR(20) INIT('hello world');
DCL 1 pos FIXED BIN(31);
ON STRZ('hello', string) LABEL(found);
pos = 0;
PUT SKIP LIST 'Substring not found';
GO TO end;
found:
pos = STRPOS(string, substring);
PUT SKIP LIST 'Substring found at position ' pos;
end:
```
在这个例子中,程序首先定义了一个20个字符长度的字符串变量string,并将其初始化为"hello world"。然后,程序使用ON STRZ查找字符串"hello"在string中的位置,并将结果存储在pos变量中。如果搜索成功,则程序跳转到标签found处,输出子字符串在字符串中的位置;否则,程序输出"Substring not found"。最后,程序跳转到标签end处,结束执行。
需要注意的是,ON STRZ语句只能在PL/1程序中使用,不能在JCL或其他上下文中使用。另外,在使用ON STRZ时,需要保证substring和string变量的长度正确,否则可能会导致搜索失败或返回错误的位置。