首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >解析z/OS REXX中的字符串,部分不区分大小写

解析z/OS REXX中的字符串,部分不区分大小写
EN

Stack Overflow用户
提问于 2019-06-05 18:35:25
回答 3查看 342关注 0票数 1

我有一个REXX参数字符串,格式如下:

arg = 'update summary(A summary of something) description(The description)'

我解析了模式、摘要和描述,如下所示:

parse upper var arg mode . ,
   1, 'SUMMARY('summary')' .,
   1, 'DESCRIPTION('description')' .

我将arg转换为大写,以便摘要和描述关键字有效地不区分大小写(用户可以编写SUMMARY或Summary或SUmmAry等代码),但当然,现在我已经将实际的摘要和描述转换为大写。

如何才能使关键字的解析不区分大小写,同时保持实际参数的正确大小写?

我已经考虑过提取关键字的字符位置,并在解析语句中使用它们,而不是'1‘等,但如果可能的话,我想要一个简单而简洁的过程。

EN

回答 3

Stack Overflow用户

发布于 2019-06-05 20:06:06

我想出了这个'toUpper‘函数,它比预期的要简单一点。它接受字符串和单词列表作为输入,并返回字符串,如果找到任何单词,则将其转换为大写:

parms = 'UPdatE summary(The summary) Description(The description)'     
say 'Parms are :' parms                                                

parms = toUpper(parms, 'CHANGE UPDATE SUMMARY DESCRIPTION')            
say 'Parms are now :' parms                                            

exit                                                                   

/********************************************************************/ 
/* Subroutines                                                      */ 
/********************************************************************/ 
toUpper:                                                               

parse arg string, wordList                                             
stringUpper = string                                                   
upper stringUpper wordlist                                             

do i = 1 to words(wordlist)                                            
   word = word(wordlist,i)                                             
   pos = pos(word, stringUpper)                                        
   if pos > 0 then string = overlay(word, string, pos)                 
end                                                                    

return string 

输出:

Parms are : UPdatE summary(The summary) Description(The description)       
Parms are now : UPDATE SUMMARY(The summary) DESCRIPTION(The description) 
票数 1
EN

Stack Overflow用户

发布于 2019-06-06 05:52:35

在Rexx中模拟TSO-ish / IDCAMS-ish语法时,这是一个非常常见的任务。我通常做这样的事情。这是一个如此简短的习惯用法,我从来不会费心去创建子例程,只是内联使用它。

summary = 'Whatever the default value is'
description = 'Whatever the default value is'
parse var arg mode arg
mode = upper(mode)
do while arg <> ''
    parse var arg keyword '(' value ')' arg
    select upper(keyword)
        when 'SUMMARY' then summary = value
        when 'DESCRIPTION' then description = value
        otherwise Say 'Unknown option:' keyword
    end
end
票数 1
EN

Stack Overflow用户

发布于 2019-07-16 17:40:34

正如所提供的,Ross的代码在z/OS系统上无法工作。z/OS上的REXX有点老了。:-(以下代码将起作用。

summary = 'Whatever the default value is'                           
description = 'Whatever the default value is'                       
arg =  'UPdatE summary(The summary) Description(The description)'   
parse var arg mode arg                                              
upper mode                                                          
do while arg <> ''                                                  
    parse var arg keyword '(' value ')' arg                         
    upper keyword                                                   
    select                                                          
        when keyword='SUMMARY' then summary = value                 
        when keyword='DESCRIPTION' then description = value         
        otherwise Say 'Unknown option:' keyword                     
    end                                                             
end                                                                 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56458802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档