专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
一个生成COBOL测试数据的小程序——分析COBOL中数据声明的语句
2019-04-15 16:46
发布
生成海报
站内文章
/
PIC单片机
15633
0
1065
一般开发中,我们都使用COPY句导入记录的数据结构(以下简称COPY句),所以写这个小程序时肯定会涉及到COPY句的分析。 所以挽起袖子,来做最基础的 000100 03 レコード.
000200 05 レコード種別 PIC 9(3).
000300 05 XX番号 PIC 9(4) COMP.
000400 05 XX番号
000500 PIC S9(3) COMP-3.
000600 05 XXX種別 PIC N(10).
000700 05 XXX号 PIC S9(3) COMP-3 OCCURS 2 TIMES.
000800 05 XXXX種別 PIC X(1) OCCURS 4 TIMES..
000900 05 XXX番号 PIC S9(3) COMP-3.
001000 05 レコード識別情報 PIC S9(1) COMP-3.
001100 05 SWXXX1 PIC 1(1) BIT.
001200 05 SWXXX2 PIC 1(1) BIT.
001300 05 SWXXX3 PIC 1(1) BIT.
001400 05 あき04 PIC 1(1) BIT.
001500 05 あき05 PIC 1(1) BIT.
001600 05 あき06 PIC 1(1) BIT.
001700 05 あき07 PIC 1(1) BIT.
001800 05 あき08 PIC 1(1) BIT.
001900 05 あああ OCCURS 5 TIMES.
002000 07 はは PIC X(1).
002100 07 わわ PIC X(2).
002200 05 いいい REDEFINES XXX種別.
002300 07 らら PIC X(20).
002400 05 XXXXXNO PIC S9(05) COMP-3.
以上是一个COPY句的例子,这个例子基本上包括了所有常用的数据类型和常见的情况,可以拿这个来测试分析的是否正确。 通过例子可以观察到,前7列都是无用的,所以可以先将前面7列切掉。而COBOL的语句是以句点为结尾,所以在COBOL中可以尽情的换行、折行,这样分析语句时也就应该是以句点作为结束。 至于怎么来分析数据类型,还是先把语句读出来并处理成一个好的格式再说吧…… 基本思想是这样,读一行,先把多余的空格去掉,让每段描述符之间都只有一个空格。如果遇到句点,用SPLIT把语句按空格分块,保存到一个String数组里,然后把String数组塞到一个Collection中,OK,这样一条记录就处理完毕。 代码如下:
Public
Sub
Analysis(file
As
String
)
Dim
Data
As
String
Dim
temp
As
String
Dim
flag, flagEnd
As
Long
Set
varData
=
New
Collection
Open file
For
Input
As
#
1
flagEnd
=
0
temp
=
""
flag
=
0
Do
Until EOF(
1
)
Line Input #
1
, Data
If
Trim
(Data)
<>
""
Then
If
Mid
(Data,
7
,
1
)
=
"
*
"
Then
Else
Data
=
Right
(Data,
Len
(Data)
-
7
)
For
i
=
1
To
Len
(Data)
oneChar
=
Mid
(Data, i,
1
)
If
oneChar
<>
"
"
Then
If
oneChar
=
"
.
"
Then
flagEnd
=
1
Else
If
temp
<>
Chr
(
13
)
Then
temp
=
temp
&
oneChar
flag
=
0
End
If
End
If
Else
If
flag
=
0
And
temp
<>
""
Then
temp
=
temp
&
"
"
flag
=
1
End
If
End
If
Next
i
End
If
If
temp
<>
""
And
flagEnd
=
1
Then
tmpArr
=
Split
(temp,
"
"
)
varData.Add tmpArr
temp
=
""
flagEnd
=
0
flag
=
0
End
If
End
If
Loop
Close #
1
Explanation
End Sub
Explanation是啥?是分析数据格式的一个过程,改天写分析数据格式时再说明,呵呵。 つづく
Ta的文章
更多
>>
F2812的晶振
0 个评论
一个生成COBOL测试数据的小程序——分析COBOL中数据声明的语句
0 个评论
【数字信号处理】复指数信号幅值、相角的理解
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮