IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

如何编码十六进制数据的汇编代码。


IBM大型机论坛 -> PL / I& Assembler
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表于:星期五一月03,2014 1:02上午
引用回复

您好,

这似乎是一个移动的目标。 。 。特别是在不同的论坛上。

Sometimes i see the "标签" in the Quick reply and sometimes not.

If one uses Preview or the 发布 Reply (when shown) the 标签 are always available.
回到顶部
查看用户资料 发送私信
尼克·克劳斯顿

全球主持人


加入时间:2007年5月10日
帖子:2455
地点:英国汉普郡

 发布 发表于:星期五一月03,2014 5:45上午
引用回复

否-除了“预览”和“提交”(以及“大型机”的“拼写检查”)功能之外,我没有“快速回复”按钮。我使用Firefox和几个论坛,但都没有在“快速回复”上使用ne按钮。无论我使用IE还是一样。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表于:星期五一月03,2014 6:17上午
引用回复

嗨尼克

我在多台计算机上的多个位置使用IE。这些是不同的IE版本(8、10、11),现在(IE111-home),我在“快速依赖”编辑器上拥有所有标签。

我在这里注意到我是主持人,您是高级会员。想知道这是否受“等级/级别”控制?
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

 发布 发表于:星期五一月03,2014 6:40上午
引用回复

在配置文件中,可以将“快速回复”设置为“基本”或“高级”。也可以将其关闭(我可以这样做,否则,如果我不小心使用它,将会收到不需要的电子邮件和“观看的主题”)。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表于:星期五一月03,2014 6:43上午
引用回复

嗨,比尔,

酷-谢谢!

d
回到顶部
查看用户资料 发送私信
金曼西克

新的用户


已加入:2006年12月15日
帖子:29
地点:韩国

 发布 发表:星期六一月04,2014 12:12下午
引用回复

码:

程序代码测试

我得到了您对代码标签的回答。

谢谢,
万岁
回到顶部
查看用户资料 发送私信
史蒂夫·迈尔斯

活跃的成员


已加入:2013年11月30日
帖子:870
地点:宇宙

 发布 发表:2014年1月4日星期六5:01 pm
引用回复

使用SMF日期/时间数据来计算经过时间。

数据

在SMF数据中,日期/时间始终位于8字节的数据区域中,其格式如下
码:
时间 DAY DS   FL4
日期     DS    PL4


一天中的时间是二进制值,以1/100秒为单位。值60000例如代表1 AM。最大值为8639999:23:59:59.99。

日期中的十进制数字为0cyyddd。 cyy是年份,对于从1900年到1999年的日期,c为0,对于从2000年到2099年的日期为1。至少从概念上讲,该日期和时间是通过像这样的代码在数据中得出的
码:
         TIME  BIN
         STM   0,1,TIMEOFDAY


时间宏是标准的MVS宏,可追溯到OS / 360。有很多选择。在OS / 360中,BIN选项指示宏返回二进制形式的一天中的时间。在OS / 360中,返回值的标称精度实际上大于硬件计时工具的精度,并且还有很多其他问题。例如,每天在操作系统中记录该值数千次,并且很容易偏离实际时间。最后一个问题是系统操作员手动输入了初始日期和时间。另一个问题是,日期和时间通常代表当地时间,没有方便且可接受的方法将其转换为某种“通用”时间。

处理此数据有两个主要问题。
  • 它不是连续的,就像硬件中的时钟一样。必须分别分析日期和时间,并且很难将它们结合起来以计算经过的时间。日期也不是连续的。每年的每年的1月1日重新开始。
  • 另一方面,经过时间是连续的,因此实现必须将输入值转换为某种连续值,并且实现必须选择输出精度。


安全时间中的选择是在1/100秒内创建输出,这与输入中一天中的时间精度相同。这个选择并不完美;约248天后,一个32位带符号的数字就会溢出,并且并不能直接显示所有有用的信息。溢出虽然很少见,但却不会闻到。由于数据的某些用途是将值相加,因此相加可能会遇到麻烦。较低的输出精度会减少溢出的机会。例如,一秒的精度会将248天的范围扩展到24800天。

方法

  1. 同一天

    从一天的结束时间减去一天的开始时间
  2. 多天
    • 日期在不同的年份
      • 验证结束年份不超过起始年份+1
      • 将结束日期“标准化”,以便通过将开始年份中的天数加到结束年份中的一年中的天数来使结束年份与开始年份匹配。
      • 通过从8640000中减去第一天的时间来计算第一天的时间
      • 对于中间天,每天增加8640000。
      • 对于最后一天,将一天中的时间添加到计数中
    • 这两个日期是在同一年

      在不“标准化”日期的情况下,执行上述相同的计算。

程序

接下来有两个程序。第一个程序是SMFETIME,它是实现第一个计算的程序。第二个程序只是使用SMF类型34记录中的数据来执行SMFETIME。这些记录表示TSO会话。 SMF类型34记录出于说明目的比更常用的类型30记录更简单,这有两个原因。
  • 不必确定该记录是否针对TSO用户。
  • 会话开始时间位于记录的根部分。在类型30记录中,只能通过在记录中找到特定段来确定会话开始时间。
测试程序还显示了如何将经过的时间转换为小时/分钟格式以进行显示。
码:
安全时间 TITLE'                         转换SMF日期/时间数据PA>
               IRS TO ELAPSED 时间'
****************************************************** *********************
*                                                                     *
* Title -- 安全时间                                                   *
*                                                                     *
*功能/操作-SMFETIME计算经过的时间        *
*   在两个SMF日期/时间对之间。 SMF日期时间对是     *
*   8字节数据区;前4个字节是一天中的二进制时间      *
*   后4个字节是日期(以压缩十进制数字表示)      *
*   格式为P'0cyyddd'。 SMFETIME可以处理以下日期       *
*   延长到第二年。 换句话说,开始日期          *
*   可以是2013年,结束日期可以是2014年。                   *
*                                                                     *
*   SMFETIME验证输入数据是否有效和合理。  The    *
*   前4个字节必须在0到8639999之间(23:59:59.99), and    *
*   后4个字节必须用十进制压缩。                        *
*                                                                     *
*通话顺序-                                                 *
*            呼叫 安全时间,(start,end,RESULT) (or equivalent)         *
*            ...                                                      *
*   start    DC   F'time-of-day',PL4'0cyyddd'                         *
*   end      DC   F'time-of-day',PL4'0cyyddd'                         *
*   RESULT   DC   F'elapsed-time'                                     *
*                                                                     *
*属性-SMFETIME是可重新输入,可刷新和可重用的。    *
*   它可以在与以下设备兼容的任何AMODE和RMODE中运行        *
*   呼叫者,召集者;它被声明为AMODE 31,RMODE ANY。  The result       *
*   以1/100秒为单位。 该progran在      *
*   TCB模式,问题状态和问题密钥。  Since it uses no        *
*   外部资源,其APF状态未定义。                  *
*                                                                     *
*注册15个返回码-                                           *
*   0-结果区域包含经过的时间。                   *
*   4-输入数据无效。                                   *
*       -日期区域未包装十进制。                     *
*       -一天中的时间值不在0至的范围内        *
*          8639999.                                                   *
*       结果溢出了32位寄存器的容量。     *
*        (248+ days).                                                 *
*                                                                     *
*限制-SMFETIME使用TP指令测试日期   *
*   areas. 如果该指令不可用,SMFETIME将失败   *
*   带有S0C1 ABEND;如果汇编器不支持         *
*   指示程序集将失败。 使用  *
*   提供了TRT指令以及两个翻译和测试表,分别为  *
*   comments. 此代码尚未经过测试。                         *
*                                                                     *
*   SMFETIME要求z / Architecture级别设置为1。  This level set     *
*   不提供TP指令。                              *
*                                                                     *
****************************************************** *********************
         SPACE 5
安全时间段                     DEFINE PROGRAM 中科院
安全时间 AMODE 31                 定义程序模式
安全时间 RMODE ANY                 DEFINE PROGRAM RMODE
办公区                     定义工作区
         ORG   WORKAREA+72-8       RESET POSITION TO THE 保存 AREA    ->
                                    REGISTER 11 AREA
作品    DS    D                   定义一个双字工作区
安全时间段                     返回计划部分
         USING *,10               建立计划的能力
         USING WORKAREA,13         建立工作区的能力
         SAVE  (14,10),,'SMFETIME &SYSDATE &SYSTIME'  保存 REGISTERS
         LR    10,15               复印输入点地址至第10条
         LM    2,4,0(1)           加载参数列表
*        TRT   4(3,2),TRTTAB1      VERIFY
*        JNZ   EXIT4                THE
*        TRT   4(3,3),TRTTAB1        日期
*        JNZ   EXIT4                  AREAS
*        TRT   7(1,2),TRTTAB2          CONTAIN
*        JNZ   EXIT4                    PACKED
*        TRT   7(1,3),TRTTAB2            DECIMAL
*        JNZ   EXIT4                      DATA
         TP    4(4,2)              TEST START 日期
         JNZ   EXIT4               BR如果未打包十进制
         TP    4(4,3)              TEST 结束 日期
         JNZ   EXIT4               BR如果未打包十进制
         ICM   0,B'1111',0(2)     每天的加载开始时间
         JM    出口4               BR IF BAD
         ICM   1,B'1111',0(3)     加载结束时间
         JM    出口4               BR IF BAD
         C     0,=A(100*24*60*60-1) 每天的测试开始时间
         JH    出口4                 BR IF TOO HIGH
         C     1,=A(100*24*60*60-1)一天的测试结束时间
         JH    出口4                 BR IF TOO HIGH
         CP    4(4,2),4(4,3)       如果开始日期=结束日期则进行测试
         JNE   MDAYS               BR IF NOT
         SR    1,0                 COMPUTE ELAPSED 时间
         ST    1,0(,4)             STORE ELAPSED 时间
         JM    出口4               BR IF BAD
         J     EXIT0               EXIT WITH A SMILE
MDAYS    ZAP   DWORK,4(4,2)        CONVERT START 日期
         CVB   7,DWORK              TO BINARY
         ZAP   DWORK,4(4,3)        CONVERT 结束 日期
         CVB   9,DWORK              TO BINARY
         SR    6,6                 SEPARATE
         SR    8,8                  CYY
         D     6,=F'1000'            AND
         D     8,=F'1000'             DDD
* REG目录
*  6 开学日期的第几天
*  7 开学年度
*  8 截止日期的一天
*  9  CYY OF 结束ING YEAR
         LR    1,9                 将第CYY复制结束
         SR    1,7                 从START CYY减去END CYY
         JZ    SAMEYEAR           BR IF 结束 CYY = START CYY
         JM    出口4               BR IF 结束 CYY < START CYY
         CHI   1,1                 TEST IF 结束 CYY = START CYY + 1
         JNE   EXIT4               BR IF NOT
         LR    1,7                 COPY START CYY TO REG 1
         AHI   1,1900             将开始CYY转换为真实年份
         LR    14,1               从年份开始到REG 14
         N     14,=A(B'11')       如果可能的话,请进行测试
         JNZ   NOTLEAP             BR如果不是很轻松的一年
         LR    15,1               从年份开始到REG 15
         D     14,=F'100'         将开年除以100
         LTR   14,14               TEST THE REMAINDER
         JNZ   ISLEAP             BR如果年份不算是一个世纪  ->
                                    YEAR
         N     15,=A(B'11')       如果开始是一个世纪,请进行测试    ->
                                    LEAP YEAR
         JZ    伊斯拉              BR IF SO
跳跳  LHI   0,365               SET REG 0 =正常年份的天数
         J     ADJUST
伊斯拉   LHI   0,366               SET REG 0 =短短的几天
调整   AR    8,0                 UPDATE 结束 DDD
*现在计算所需时间
*计算时间在第一天
萨米尔·L     0,=A(100*24*60*60) 每天加载午夜时间
         S     0,0(,2)             减去开始时间
明天  AHI   6,1                 在一年中的第一天添加1
         CR    6,8                 比较年度结束日期
         JE    最后一天             BR IF LAST DAY
         A     0,=A(100*24*60*60) 在1整天增加时间
         JO    出口4               BR IF OVERFLOW
         J     NEXTDAY             AND DO IT AGAIN
最后一天  A     0,0(,3)             ADD 时间 IN THIS DAY
         JO    出口4               BR IF MATH OVERFLOW
         ST    0,0(,4)             STORE 结果
出口0    SR    15,15               SET RC = 0
         J     EXIT
出口4    LHI   15,4                SET RC = 4
出口     RETURN (14,10),T,RC=(15)  恢复寄存器& RETURN
         DC    0D'0'
*使用TRTTAB1验证前3个字节,并使用TRTTAB2验证
*打包的十进制数据的第4个字节。
**                 0 1 2 3 4 5 6 7 8 9 A B C D E F
* TRTTAB1  DC   10X'00000000000000000000040404040404'
*         DC     6X'04040404040404040040404040404040404'
* TRTTAB2  DC   10X'00000000000000000000000000000000'
*         DC     6X'04040404040404040040404040404040404'
         LTORG ,                   DEFINE THE 安全时间 LITERALS
         DC    0D'0'               ROUND 中科院 TO 8 BYTES
         END   ,
码:
*使用真实SMF数据进行测试。  THE OUTPUT LINE IS
*    (1)      (2)     (3)     (4)      (5)     (6)      (7)
* UUUUUUUU DDDDDDDDD HHH:MM DDDDDDD  YYYY / DDD DDDDDDD  YYYY / DDD
* (1)UUUUUUUU是一个用户名
* (2) DDDDDDDDD IS THE "RAW"SMFETIME的经过时间(显示为A)
*     9位数字
* (3) HHH:MM是SMFETIME的经过时间。 HHH代表小时
*     MM代表分钟
* (4)DDDDDDD是一天的开始时间,以秒为单位的1/100
* (5)CYY / DDD是开始日期
* (6)DDDDDDD是一天的结束时间
* (7) YYYY / DDD IS THE 结束 日期
         SPACE 1
*该计划的主要目的是演示使用
* 安全时间;不要进行现实的SMF记录分析。  THE SMF 34 RECORD
*自记录日期/时间以来,此目的很方便
*并且会议开始日期/时间在记录的根目录中,
*在30型记录中比粪便响得多。
         SPACE 1
*从1/100分之一的值转换为H:MM VALUE IS AN
*自定义数据转换为辅助报告的可读性。
         SPACE 1
驱动器   CSECT                     ESTABLISH PROGRAM 中科院
         PUSH  打印
         PRINT NOGEN
SMFREC   DSECT                     为SMF数据定义DSECT
         IFASMFR 34               为SMF 34记录定义DSECT
         POP   PRINT
驱动器   CSECT                     RETURN TO PROGRAM 中科院
         USING *,12               建立计划的能力
         SAVE  (14,12),,*          保存 呼叫ER'S REGISTERS
         LR    12,15               复印输入点地址至第12条
         LA    15,SAVEAREA         LOAD ADDRESS OF THE NEW 保存 AREA
         ST    13,4(,15)           ADD NEW 保存 AREA TO THE
         ST    15,8(,13)            保存 AREA CHAIN
         LR    13,15               ESTABLISH A NEW 保存 AREA POINTER
         OPEN  MF=(E,OPARM)        打开 THE DATA SETS
循环     GET   SMFDCB              READ A RECORD
         LR    2,1                 将修订地址复制到REG 2
         USING SMFREC,2           建立SMF记录可寻址性
         CLI   TIVRCDTY,34         测试TYPE 34记录
         JNE   LOOP                BR如果没有
         L     15,=V(SMFETIME)     LOAD ADDRESS OF 安全时间
         CALL  (15),(TIVONTME,TIVRCDTS),MF=(E,CALLPARM)  COMPUTE THE  ->
                                   会议所需时间
         MVC   STIME,EDMASK3        COPY
         MVC   ETIME,EDMASK3         EDIT
         MVC   SDATE,EDMASK4          MASKS
         MVC   EDATE,EDMASK4           TO THE OUTPUT LINE
         ED    SDATE,TIVONTME+4   转换登录并注销日期
         ED    EDATE,TIVRCDTS+4     CYY/DDD
         ICM   0,B'1111',TIVONTME 加载登录时间
         CVD   0,16(,13)           将登录时间转换为十进制
         ED    时光,16+4(13)       AND DECIMAL DIGITS
         ICM   0,B'1111',TIVRCDTS 加载注销时间
         CVD   0,16(,13)           将注销时间转换为打包时间
         ED    时代,16+4(13)       十进制和十进制数字
         L     1,RESULT            LOAD THE 结果
*将耗时转换为HHH.MM(HOURS/MINUTES)
         SR    0,0                 SET REG 0 = 0
         D     0,=A(100*60*60)     用时间除以数字  ->
                                   一小时内的1/100秒   ->
                                     寄存器1包含数字   ->
                                     小时和登记2的内容   ->
                                       分钟数和      ->
                                       会议第二
         MHI   1,100               乘以100
         LR    3,1                 COPY HOURS TO REG 3
         LR    1,0                 复印时间和秒数,到第1条
         SR    0,0                 SET REG 0 = 0
         D     0,=A(100*60)       除以分钟和秒  ->
                                   十分之一的秒数  ->
                                     MINUTE
         AR    3,1                 将分钟数增加。  WE NOW HAVE ->
                                   复合值HHMM
         CVD   3,16(,13)           将HHMM转换为十进制
         MVC   ETIME1,EDMASK1     将编辑掩码复制到工作区域
         ED    时间1,16+5(13)     将HHMM转换为HH.MM格式
         L     0,RESULT            LOAD THE 生的 ELAPSED 时间
         CVD   0,16(,13)           CONVERT TO DECIMAL
         MVC   ETIME2,EDMASK2     在输出线上复制编辑标签
         ED    时间2,16+3(13)     将所需的时间转换为数字
         MVC   OUTUSER,TIVUIF     将用户名复制到行中
         PUT   PRINT,OUTLINE       写出完整的输出线
         J     LOOP                DO IT AGAIN
紧急行动      CLOSE MF=(E,CPARM)        CLOSE THE DATA SETS
         L     13,4(,13)           LOAD ADDRESS OF THE HIGHER 保存 AREA
         RETURN (14,12),T,RC=0     RESTORE REGISTERS & RETURN
保存AREA DC    9D'0'               72 BYTE OS/260 保存 AREA
         PUSH  打印
         PRINT NOGEN
OPARM    打开  (打印,输出,SMFDCB,输入),MF=L 打开 PARM LIST
CPARM    CLOSE (PRINT,,SMFDCB),MF=L             CLOSE PARM LIST
打印    DCB   DSORG = PS,MACRF = PM,DDNAME = SYSPRINT,RECFM = VBA,LRECL = 125
SMFDCB   DCB   DSORG = PS,MACRF = GL,DDNAME = SMF,BFTEK = A,EODAD = 紧急行动
         POP   PRINT
*参数列表发送到SMTIME。 前两个参数指针
*指向登录和注销日期/时间,并填写在
* "EXECUTE"呼叫宏的表格,用于指定此参数列表。
呼叫PARM 呼叫  ,(*-*,*-*,RESULT),MF=L
结果   DC    F'0'               SMFETIME计算的经过时间
* 编辑 MASKS
EDMASK1  DC   0C'HHH.MM',C'',X'202120',C'。',X'2020'
EDMASK2  DC   0C'DDDDDDDDD',C'',7X'20',X'2120'
EDMASK3  DC   0C'DDDDDDD',C'',5X'20',X'2120'
EDMASK4  DC   0C' CYY / DDD',C'',X'20202120',C'/',X'202020'
*输出线构建区域
大纲  DC    AL2(OUTLINEL,0),C' '
OUTUSER  DC    CL8' '
时间2   DC    C' DDDDDDDDD'
时间1   DC    C' HHH.MM'
时光    DC    C' DDDDDDD'
SDATE    DC    C'  YYYY / DDD'
时代    DC    C' DDDDDDD'
EDATE    DC    C'  YYYY / DDD'
大纲L EQU   *-OUTLINE
         DC    0D'0'
         LTORG ,
         DC    0D'0'
         END   DRIVER
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表于:2014年1月5日,星期日2:54
引用回复

史蒂夫很好。

感谢您抽出宝贵的时间在场。

d
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> PL / I& Assembler 转到页面 以前  1, 2

 


类似主题
话题 论坛 回覆
没有新帖 比较两个文件以查找位置/日期... 同步排序 2
没有新帖 用时间戳计算 PL / I& Assembler 19
没有新帖 加载D ...时二级索引错误 IMS数据库/ DC 2
没有新帖 无论先前的步骤如何,都执行步骤... JCL和VSAM 2
没有新帖 在UPDATE语句中跳过锁定的数据 DB2 9
搜索我们的论坛:


回到顶部