Mainframe 将返回唯一字符串的REXX例程
我想定义一个函数,该函数每次调用时都返回一个唯一的字符串。该函数的返回值在未来50年内必须是唯一的。以下是我尝试过的:Mainframe 将返回唯一字符串的REXX例程,mainframe,rexx,Mainframe,Rexx,我想定义一个函数,该函数每次调用时都返回一个唯一的字符串。该函数的返回值在未来50年内必须是唯一的。以下是我尝试过的: k.rand=USERID() do i=1 to 10 by 1 n=RANDOM(1,26) k.i=word('a b c d e f g h I j k l m n o p q r s t u v w x y z ',n) m.i= WORD('@ ! # $ % ^ * 1 2 3 4 5 6 7 8 9',i) k.rand=k.rand ||k.i ||m.I
k.rand=USERID()
do i=1 to 10 by 1
n=RANDOM(1,26)
k.i=word('a b c d e f g h I j k l m n o p q r s t u v w x y z ',n)
m.i= WORD('@ ! # $ % ^ * 1 2 3 4 5 6 7 8 9',i)
k.rand=k.rand ||k.i ||m.I
END
say k.rand
Rexx中没有内置的UUID函数。担保期至34000年:) zUID是z/OS环境中的一个支持云的服务,它生成 使用专门的正在申请专利的算法的唯一标识符。信息技术 保证在年底前生成100%的唯一标识符 34000,无需数据库系统进行管理 服务以三种不同的十六进制格式返回UID:普通格式、guid格式和 ess为纯文本格式。它们没有用XML或JSON包装 结构 普通:32字节,1234567890abcdef1234567890abcdef
ess:34字节,12345678-90abcdef12345678-90abcdef
guid:36字节,12345678-90ab-cdef-1234-567890abcdef 此服务不需要授权 除了支持web之外,您还可以直接调用此例程 在COBOL程序中使用CICS链接命令。HTTP接口 旨在使更多的z/OS以外的消费者能够使用它 环境
Rexx中没有内置的UUID函数。担保期至34000年:) zUID是z/OS环境中的一个支持云的服务,它生成 使用专门的正在申请专利的算法的唯一标识符。信息技术 保证在年底前生成100%的唯一标识符 34000,无需数据库系统进行管理 服务以三种不同的十六进制格式返回UID:普通格式、guid格式和 ess为纯文本格式。它们不是用XML或JSON包装的 结构 普通:32字节,1234567890abcdef1234567890abcdef
ess:34字节,12345678-90abcdef12345678-90abcdef
guid:36字节,12345678-90ab-cdef-1234-567890abcdef 此服务不需要授权 除了支持web之外,您还可以直接调用此例程 在COBOL程序中使用CICS链接命令。HTTP接口 旨在使更多的z/OS以外的消费者能够使用它 环境
在我们的站点上,有一些REXX工具,当调用这些工具时,它们将提交大型机作业。例如,如果对数据集调用该工具,则将在后台提交作业以查找数据集中的记录数 在给定的时间内,可以多次调用REXX工具。为了避免spool中工作名称的重复,我们提出了如下内容
NUM = RANDOM(000,999)
JOBNAME=USERID()||NUM
USERID()
和RANDOM()
都是REXX中内置的函数
USERID()
返回TSO/E用户ID。详细信息
RANDOM
返回一个随机数。更多细节
提供了一个代码片段供您尝试 在我们的站点上,有一些REXX工具,当被调用时,它们将提交大型机作业。例如,如果对数据集调用该工具,则将在后台提交作业以查找数据集中的记录数 在给定的时间内,可以多次调用REXX工具。为了避免spool中工作名称的重复,我们提出了如下内容
NUM = RANDOM(000,999)
JOBNAME=USERID()||NUM
USERID()
和RANDOM()
都是REXX中内置的函数
USERID()
返回TSO/E用户ID。详细信息
RANDOM
返回一个随机数。更多细节
提供了一个代码片段供您尝试 您是否在z/OS系统上运行REXX?如果是这样,您可以使用
STCKE
存储扩展时钟
指令生成唯一的数字,当在同一系统或同步时钟的sysplex上生成时,该指令将在数千年内保持唯一
您需要打开汇编程序来编写外部REXX函数
STCKE RSECT
STCKE AMODE 31
STCKE RMODE ANY
SAVE (14,12)
LR R12,R15
USING STCKE,R12
USING EFPL,R1 REXX external function parameter list
L R4,EFPLEVAL
L R4,0(R4) REXX evaluation block
USING EVALBLOCK,R4
STCKE EVALBLOCK_EVDATA Store STCKE in the function result area
MVC EVALBLOCK_EVLEN,=F'16' length of result (STCKE)
LA R15,0 RC=0
RETURN (14,12),RC=(15)
YREGS
IRXEFPL
IRXEVALB
END
并确保将REXX代码中的数字设置为STCKF
是一个16字节的大数字
/* REXX */
numeric digits 64
do 10
raw = stcke()
hex = c2x(raw)
num = x2d(hex)
say hex num
end
您是否在z/OS系统上运行REXX?如果是这样,您可以使用STCKE
存储扩展时钟
指令生成唯一的数字,当在同一系统或同步时钟的sysplex上生成时,该指令将在数千年内保持唯一
您需要打开汇编程序来编写外部REXX函数
STCKE RSECT
STCKE AMODE 31
STCKE RMODE ANY
SAVE (14,12)
LR R12,R15
USING STCKE,R12
USING EFPL,R1 REXX external function parameter list
L R4,EFPLEVAL
L R4,0(R4) REXX evaluation block
USING EVALBLOCK,R4
STCKE EVALBLOCK_EVDATA Store STCKE in the function result area
MVC EVALBLOCK_EVLEN,=F'16' length of result (STCKE)
LA R15,0 RC=0
RETURN (14,12),RC=(15)
YREGS
IRXEFPL
IRXEVALB
END
并确保将REXX代码中的数字设置为STCKF
是一个16字节的大数字
/* REXX */
numeric digits 64
do 10
raw = stcke()
hex = c2x(raw)
num = x2d(hex)
say hex num
end
您尝试过什么???,您想要用rexx编写一个外部函数吗(或另一种语言该值多久生成一次?每天?每秒?如果每一秒都能生成足够的唯一值来覆盖整个时间跨度-我不打算做数学计算?你需要唯一值还是随机值?如上所述,随机值不一定会在这段时间内生成唯一的标记。如果你需要唯一值,为什么不使用简单的counter?@NicC是对的。我个人会使用当前时间和日期作为字符串和/或随机种子的一部分。您尝试了什么??,您想要用rexx编写外部函数吗(或另一种语言该值多久生成一次?每天?每秒?如果每一秒都能生成足够的唯一值来覆盖整个时间跨度-我不打算做数学计算?你需要唯一值还是随机值?如上所述,随机值不一定会在这段时间内生成唯一的标记。如果你需要唯一值,为什么不使用简单的counter?@NicC是对的。我个人会使用当前时间和日期作为字符串和/或随机种子的一部分。谢谢。这很有帮助。但另一个问题是该值在未来50年内不会重复。(生成的字符串)。无法保证这些字符串是唯一的。这是一个随机数。您可以背对背运行两次,并得到相同的结果。您得到相同字符串的几率为千分之一。如果需要在