小端机器上COBOL压缩十进制字段的物理存储
在大端机上,我理解压缩十进制数后字节的形状。我没有发现的是,在一台小小的Endian机器上,这些字节会呈现什么形状 注意:我认为存在单独格式的原因在于IBM MQ编码字段具有以下值:-小端机器上COBOL压缩十进制字段的物理存储,cobol,packed-decimal,Cobol,Packed Decimal,在大端机上,我理解压缩十进制数后字节的形状。我没有发现的是,在一台小小的Endian机器上,这些字节会呈现什么形状 注意:我认为存在单独格式的原因在于IBM MQ编码字段具有以下值:- MQENC\u DECIMAL\u NORMAL MQENC\u DECIMAL\u REVERSED 对于MQENC\u DECIMAL\u REVERSED- 压缩十进制整数的表示方式与MQENC_decimal_NORMAL相同,但字节排列顺序相反。每个字节内的位的排列方式与MQENC\u DECIMA
MQENC\u DECIMAL\u NORMAL
MQENC\u DECIMAL\u REVERSED
MQENC\u DECIMAL\u REVERSED
-
压缩十进制整数的表示方式与MQENC_decimal_NORMAL
相同,但字节排列顺序相反。每个字节内的位的排列方式与MQENC\u DECIMAL\u NORMAL
相同
有人能证实或反驳这一描述吗
例如,存储在PIC 9(3)V99 COMP-3
中的+123.45数字将具有以下字节:-
12 34 5C
上面的引文向我表明,如果采用相反的方式,相同的压缩十进制数将在小端机器上表示为:-
5C 34 12
N.B.我没有用
ibm mq
标记这个问题,因为我真的认为我问题的关键与ibm mq没有任何关系。这就是我提问的原因。看起来压缩数据是以“正常”字节顺序存储的
以下程序是在联想ThinkPad上的Ubuntu 16.04上用OpenCOBOL 1.1.0编译的
ID Division.
Program-ID. testcmp3.
Environment Division.
Input-Output Section.
File-Control.
Select OUTPUT01 Assign To './output01'
Status OUTPUT01-STATUS.
Data Division.
File Section.
FD OUTPUT01
Record 16
Block 0
Recording F.
01 OUTPUT01-REC PIC X(016).
Working-Storage Section.
01 CONSTANTS.
05 MYNAME PIC X(008) VALUE 'testcmp3'.
01 WS-OUTPUT01-REC.
05 WS-OUT-S94COMP PIC S9(004) COMP VALUE +0.
05 FILLER PIC X(001) VALUE HIGH-VALUES.
05 WS-OUT-S95COMP3 PIC S9(005) COMP-3 VALUE +0.
05 FILLER PIC X(008) VALUE SPACES.
01 WORK-AREAS.
05 OUTPUT01-STATUS PIC X(002) VALUE ZEROES.
Procedure Division.
OPEN OUTPUT OUTPUT01
IF OUTPUT01-STATUS NOT = '00'
DISPLAY
MYNAME
' open of OUTPUT01 status = '
OUTPUT01-STATUS
END-IF
PERFORM 100-WRITE 100 TIMES
CLOSE OUTPUT01
STOP RUN.
100-WRITE.
WRITE OUTPUT01-REC FROM WS-OUTPUT01-REC
ADD 1 TO WS-OUT-S94COMP
ADD 1 TO WS-OUT-S95COMP3
.
…将选项binary byteorder
设置为native
生成的文件与hextump
程序一起显示,如下所示
00000000 00 00 ff 00 00 0c 20 20 20 20 20 20 20 20 20 20 |...... |
00000010 01 00 ff 00 00 1c 20 20 20 20 20 20 20 20 20 20 |...... |
00000020 02 00 ff 00 00 2c 20 20 20 20 20 20 20 20 20 20 |....., |
00000030 03 00 ff 00 00 3c 20 20 20 20 20 20 20 20 20 20 |.....< |
00000040 04 00 ff 00 00 4c 20 20 20 20 20 20 20 20 20 20 |.....L |
00000050 05 00 ff 00 00 5c 20 20 20 20 20 20 20 20 20 20 |.....\ |
00000060 06 00 ff 00 00 6c 20 20 20 20 20 20 20 20 20 20 |.....l |
00000070 07 00 ff 00 00 7c 20 20 20 20 20 20 20 20 20 20 |.....| |
00000080 08 00 ff 00 00 8c 20 20 20 20 20 20 20 20 20 20 |...... |
00000090 09 00 ff 00 00 9c 20 20 20 20 20 20 20 20 20 20 |...... |
000000a0 0a 00 ff 00 01 0c 20 20 20 20 20 20 20 20 20 20 |...... |
000000b0 0b 00 ff 00 01 1c 20 20 20 20 20 20 20 20 20 20 |...... |
000000c0 0c 00 ff 00 01 2c 20 20 20 20 20 20 20 20 20 20 |....., |
000000d0 0d 00 ff 00 01 3c 20 20 20 20 20 20 20 20 20 20 |.....< |
000000e0 0e 00 ff 00 01 4c 20 20 20 20 20 20 20 20 20 20 |.....L |
000000f0 0f 00 ff 00 01 5c 20 20 20 20 20 20 20 20 20 20 |.....\ |
00000100 10 00 ff 00 01 6c 20 20 20 20 20 20 20 20 20 20 |.....l |
00000110 11 00 ff 00 01 7c 20 20 20 20 20 20 20 20 20 20 |.....| |
00000120 12 00 ff 00 01 8c 20 20 20 20 20 20 20 20 20 20 |...... |
00000130 13 00 ff 00 01 9c 20 20 20 20 20 20 20 20 20 20 |...... |
00000140 14 00 ff 00 02 0c 20 20 20 20 20 20 20 20 20 20 |...... |
00000150 15 00 ff 00 02 1c 20 20 20 20 20 20 20 20 20 20 |...... |
00000160 16 00 ff 00 02 2c 20 20 20 20 20 20 20 20 20 20 |....., |
00000170 17 00 ff 00 02 3c 20 20 20 20 20 20 20 20 20 20 |.....< |
00000180 18 00 ff 00 02 4c 20 20 20 20 20 20 20 20 20 20 |.....L |
00000190 19 00 ff 00 02 5c 20 20 20 20 20 20 20 20 20 20 |.....\ |
000001a0 1a 00 ff 00 02 6c 20 20 20 20 20 20 20 20 20 20 |.....l |
000001b0 1b 00 ff 00 02 7c 20 20 20 20 20 20 20 20 20 20 |.....| |
000001c0 1c 00 ff 00 02 8c 20 20 20 20 20 20 20 20 20 20 |...... |
000001d0 1d 00 ff 00 02 9c 20 20 20 20 20 20 20 20 20 20 |...... |
000001e0 1e 00 ff 00 03 0c 20 20 20 20 20 20 20 20 20 20 |...... |
000001f0 1f 00 ff 00 03 1c 20 20 20 20 20 20 20 20 20 20 |...... |
00000200 20 00 ff 00 03 2c 20 20 20 20 20 20 20 20 20 20 | ...., |
00000210 21 00 ff 00 03 3c 20 20 20 20 20 20 20 20 20 20 |!....< |
00000220 22 00 ff 00 03 4c 20 20 20 20 20 20 20 20 20 20 |"....L |
00000230 23 00 ff 00 03 5c 20 20 20 20 20 20 20 20 20 20 |#....\ |
00000240 24 00 ff 00 03 6c 20 20 20 20 20 20 20 20 20 20 |$....l |
00000250 25 00 ff 00 03 7c 20 20 20 20 20 20 20 20 20 20 |%....| |
00000260 26 00 ff 00 03 8c 20 20 20 20 20 20 20 20 20 20 |&..... |
00000270 27 00 ff 00 03 9c 20 20 20 20 20 20 20 20 20 20 |'..... |
00000280 28 00 ff 00 04 0c 20 20 20 20 20 20 20 20 20 20 |(..... |
00000290 29 00 ff 00 04 1c 20 20 20 20 20 20 20 20 20 20 |)..... |
000002a0 2a 00 ff 00 04 2c 20 20 20 20 20 20 20 20 20 20 |*...., |
000002b0 2b 00 ff 00 04 3c 20 20 20 20 20 20 20 20 20 20 |+....< |
000002c0 2c 00 ff 00 04 4c 20 20 20 20 20 20 20 20 20 20 |,....L |
000002d0 2d 00 ff 00 04 5c 20 20 20 20 20 20 20 20 20 20 |-....\ |
000002e0 2e 00 ff 00 04 6c 20 20 20 20 20 20 20 20 20 20 |.....l |
000002f0 2f 00 ff 00 04 7c 20 20 20 20 20 20 20 20 20 20 |/....| |
00000300 30 00 ff 00 04 8c 20 20 20 20 20 20 20 20 20 20 |0..... |
00000310 31 00 ff 00 04 9c 20 20 20 20 20 20 20 20 20 20 |1..... |
00000320 32 00 ff 00 05 0c 20 20 20 20 20 20 20 20 20 20 |2..... |
00000330 33 00 ff 00 05 1c 20 20 20 20 20 20 20 20 20 20 |3..... |
00000340 34 00 ff 00 05 2c 20 20 20 20 20 20 20 20 20 20 |4...., |
00000350 35 00 ff 00 05 3c 20 20 20 20 20 20 20 20 20 20 |5....< |
00000360 36 00 ff 00 05 4c 20 20 20 20 20 20 20 20 20 20 |6....L |
00000370 37 00 ff 00 05 5c 20 20 20 20 20 20 20 20 20 20 |7....\ |
00000380 38 00 ff 00 05 6c 20 20 20 20 20 20 20 20 20 20 |8....l |
00000390 39 00 ff 00 05 7c 20 20 20 20 20 20 20 20 20 20 |9....| |
000003a0 3a 00 ff 00 05 8c 20 20 20 20 20 20 20 20 20 20 |:..... |
000003b0 3b 00 ff 00 05 9c 20 20 20 20 20 20 20 20 20 20 |;..... |
000003c0 3c 00 ff 00 06 0c 20 20 20 20 20 20 20 20 20 20 |<..... |
000003d0 3d 00 ff 00 06 1c 20 20 20 20 20 20 20 20 20 20 |=..... |
000003e0 3e 00 ff 00 06 2c 20 20 20 20 20 20 20 20 20 20 |>...., |
000003f0 3f 00 ff 00 06 3c 20 20 20 20 20 20 20 20 20 20 |?....< |
00000400 40 00 ff 00 06 4c 20 20 20 20 20 20 20 20 20 20 |@....L |
00000410 41 00 ff 00 06 5c 20 20 20 20 20 20 20 20 20 20 |A....\ |
00000420 42 00 ff 00 06 6c 20 20 20 20 20 20 20 20 20 20 |B....l |
00000430 43 00 ff 00 06 7c 20 20 20 20 20 20 20 20 20 20 |C....| |
00000440 44 00 ff 00 06 8c 20 20 20 20 20 20 20 20 20 20 |D..... |
00000450 45 00 ff 00 06 9c 20 20 20 20 20 20 20 20 20 20 |E..... |
00000460 46 00 ff 00 07 0c 20 20 20 20 20 20 20 20 20 20 |F..... |
00000470 47 00 ff 00 07 1c 20 20 20 20 20 20 20 20 20 20 |G..... |
00000480 48 00 ff 00 07 2c 20 20 20 20 20 20 20 20 20 20 |H...., |
00000490 49 00 ff 00 07 3c 20 20 20 20 20 20 20 20 20 20 |I....< |
000004a0 4a 00 ff 00 07 4c 20 20 20 20 20 20 20 20 20 20 |J....L |
000004b0 4b 00 ff 00 07 5c 20 20 20 20 20 20 20 20 20 20 |K....\ |
000004c0 4c 00 ff 00 07 6c 20 20 20 20 20 20 20 20 20 20 |L....l |
000004d0 4d 00 ff 00 07 7c 20 20 20 20 20 20 20 20 20 20 |M....| |
000004e0 4e 00 ff 00 07 8c 20 20 20 20 20 20 20 20 20 20 |N..... |
000004f0 4f 00 ff 00 07 9c 20 20 20 20 20 20 20 20 20 20 |O..... |
00000500 50 00 ff 00 08 0c 20 20 20 20 20 20 20 20 20 20 |P..... |
00000510 51 00 ff 00 08 1c 20 20 20 20 20 20 20 20 20 20 |Q..... |
00000520 52 00 ff 00 08 2c 20 20 20 20 20 20 20 20 20 20 |R...., |
00000530 53 00 ff 00 08 3c 20 20 20 20 20 20 20 20 20 20 |S....< |
00000540 54 00 ff 00 08 4c 20 20 20 20 20 20 20 20 20 20 |T....L |
00000550 55 00 ff 00 08 5c 20 20 20 20 20 20 20 20 20 20 |U....\ |
00000560 56 00 ff 00 08 6c 20 20 20 20 20 20 20 20 20 20 |V....l |
00000570 57 00 ff 00 08 7c 20 20 20 20 20 20 20 20 20 20 |W....| |
00000580 58 00 ff 00 08 8c 20 20 20 20 20 20 20 20 20 20 |X..... |
00000590 59 00 ff 00 08 9c 20 20 20 20 20 20 20 20 20 20 |Y..... |
000005a0 5a 00 ff 00 09 0c 20 20 20 20 20 20 20 20 20 20 |Z..... |
000005b0 5b 00 ff 00 09 1c 20 20 20 20 20 20 20 20 20 20 |[..... |
000005c0 5c 00 ff 00 09 2c 20 20 20 20 20 20 20 20 20 20 |\...., |
000005d0 5d 00 ff 00 09 3c 20 20 20 20 20 20 20 20 20 20 |]....< |
000005e0 5e 00 ff 00 09 4c 20 20 20 20 20 20 20 20 20 20 |^....L |
000005f0 5f 00 ff 00 09 5c 20 20 20 20 20 20 20 20 20 20 |_....\ |
00000600 60 00 ff 00 09 6c 20 20 20 20 20 20 20 20 20 20 |`....l |
00000610 61 00 ff 00 09 7c 20 20 20 20 20 20 20 20 20 20 |a....| |
00000620 62 00 ff 00 09 8c 20 20 20 20 20 20 20 20 20 20 |b..... |
00000630 63 00 ff 00 09 9c 20 20 20 20 20 20 20 20 20 20 |c..... |
00000640
00000000 ff 00 00 0c 20 20 20 ||
000000 10 01 00 ff 00 00 1c 20 20 20 ||
000000 20 02 00 ff 00 00 2c 20 20 20 20 ||
000000 30 03 00 ff 00 00 3c 20 20 20||
000000 40 04 00 ff 00 00 4c 20 20 20 |…L|
000000 50 05 00 ff 00 00 5c 20 20 20 20 ||
000000 60 06 00 ff 00 00 6c 20 20 20 |…l|
000000 70 07 00 ff 00 00 7c 20 20 20 20 ||
000000 80 08 00 ff 00 00 8c 20 20 20 ||
000000 90 09 00 ff 00 00 9c 20 20 20 ||
000000 A0 0a 00 ff 00 01 0c 20 20 ||
000000 B0 0b 00 ff 00 01 1c 20 20 ||
000000 C0 0c 00 ff 00 01 2c 20 20 20 ||
000000 D0 0d 00 ff 00 01 3c 20 20||
000000 E0 0e 00 ff 00 01 4c 20 20 |…L|
000000 F0 0f 00 ff 00 01 5c 20 20 20 ||
00000100 10 00 ff 00 01 6c 20 20 20 |…l|
00000110 11 00 ff 00 01 7c 20 20 20|
00000 120 12 00 ff 00 01 8c 20 20 ||
00000130 130 00 ff 00 01 9c 20 20 20 ||
00000140 14 00 ff 00 02 0c 20 20 ||
00000150 1500 ff 00 02 1c 20 20 20 ||
00000160 16 00 ff 00 02 2c 20 20 20 ||
00000170 17 00 ff 00 02 3c 20 20 20||
00000180 180 00 ff 00 02 4c 20 20 20 |…L|
00000190 1900 ff 00 02 5c 20 20 20|
000001a0 1a 00 ff 00 02 6c 20 20 |…l|
00000 1B0 1b 00 ff 00 02 7c 20 20 20 ||
000001c0 1C00 ff 00 02 8c 20 20 ||
00000 1D0 1d 00 ff 00 02 9c 20 20 ||
000001e0 1e 00 ff 00 03 0c 20 20 ||
00000 1F0 1f 00 ff 00 03 1c 20 20 20 ||
00000200 200 ff 00 03 2c 20 20 20 20 ||
00000210 21 00 ff 00 03 3c 20 20 ||
00000220 22 00 ff 00 03 4c 20 20 20 |“…L|
00000230 23 00 ff 00 03 5c 20 20 20 20||
00000240 24 00 ff 00 03 6c 20 20 20 |$..l|
00000 250 25 00 ff 00 03 7c 20 20 20 | 20%|
00000260 26 00 ff 00 03 8c 20 20 |和|
00000 270 27 00 ff 00 03 9c 20 20 20 |'|
00000280 28 00 ff 00 04 0c 20 20 |(|
00000 290 29 00 ff 00 04 1c 20 20 |)|
000002a0 2a 00 ff 00 04 2c 20 20 20 |*|
00000 2B0 2b 00 ff 00 04 3c 20 20 20 |+…<|
000002c0 2C00 ff 00 04 4c 20 20 |,…L|
000002d0 2d 00 ff 00 04 5c 20 20 20 20 |-||
00000 2E0 2e 00 ff 00 04 6c 20 20 20 |…l|
00000 2F0 2f 00 ff 00 04 7c 20 20 20 |/||
00000 300 30 00 ff 00 04 8c 20 20 20 20 | 0|
00000310 31 00 ff 00 04 9c 20 20 20 | 1|
00000320 32 00 ff 00 05 0c 20 20 20 20 | 2|
00000330 33 00 ff 00 05 1c 20 20 20 20 | 3|
0000034034000 ff 00 05 2c 20 20 20 20 | 4|
00000350 35 00 ff 00 05 3c 20 20 20 | 5|
00000360 36 00