转换为具有固定位置的完全自由格式的数据结构

问题描述 投票:1回答:1

我正在将程序转换为完全免费的格式,但不知道如何用固定位置替换数据结构。而且我也无法在线找到一个很好的例子。

我有2个数据结构,如下所示。我尝试过

dcl-ds bl dim(12)
bl01 char(7);
bl02 char(7);
...
end-ds

 dcl-s bl char(7) dim(12);

这是我尝试转换的部分

 //*************************************************************************
  // NORMAL DATA STRUCTURES                                                 *
  //*************************************************************************
 D                 DS
 D  BL                     1     84
 D                                     DIM(12)                              BARCODE LABEL
 D  BL01                   1      7
 D  BL02                   8     14
 D  BL03                  15     21
 D  BL04                  22     28
 D  BL05                  29     35
 D  BL06                  36     42
 D  BL07                  43     49
 D  BL08                  50     56
 D  BL09                  57     63
 D  BL10                  64     70
 D  BL11                  71     77
 D  BL12                  78     84
 D                 DS
 D  TL                     1     72
 D                                     DIM(12)                              TEXT LABEL
 D  TL01                   1      6
 D  TL02                   7     12
 D  TL03                  13     18
 D  TL04                  19     24
 D  TL05                  25     30
 D  TL06                  31     36
 D  TL07                  37     42
 D  TL08                  43     48
 D  TL09                  49     54
 D  TL10                  55     60
 D  TL11                  61     66
 D  TL12                  67     72            

提前感谢

data-structures ibm-midrange rpgle
1个回答
0
投票

您在这里有两个选择。您可以使用posoverlayoverlay是相对位置,而pos是绝对位置。

dcl-ds *n;
    bl char(7) dim(12);
    bl01 char(7) overlay(bl);
    bl02 char(7) overlay(bl:*next);
    bl03 char(7) overlay(bl:*next);
    bl04 char(7) overlay(bl:*next);
    bl05 char(7) overlay(bl:*next);
    bl06 char(7) overlay(bl:*next);
    bl07 char(7) overlay(bl:*next);
    bl08 char(7) overlay(bl:*next);
    bl09 char(7) overlay(bl:*next);
    bl10 char(7) overlay(bl:*next);
    bl11 char(7) overlay(bl:*next);
    bl12 char(7) overlay(bl:*next);
end-ds;

另一个选项:

dcl-ds *n;
    bl char(7) dim(12) pos(1);
    bl01 char(7) pos(1);
    bl02 char(7) pos(8);
    bl03 char(7) pos(15);
    ...
end-ds;
© www.soinside.com 2019 - 2024. All rights reserved.