Mainframe 将返回唯一字符串的REXX例程

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

我想定义一个函数,该函数每次调用时都返回一个唯一的字符串。该函数的返回值在未来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
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年内不会重复。(生成的字符串)。无法保证这些字符串是唯一的。这是一个随机数。您可以背对背运行两次,并得到相同的结果。您得到相同字符串的几率为千分之一。如果需要在