5.3.6. 多个相关数据库操作的回滚ROLBK及COMIT操作
5.3.8. 使用SDA + RPG IV 进行交互式程序设计
关于程序开发,想强调的是:业务流程先于程序——程序是给计算机看得,流程是人执行的;程序是死的,而流程则是一个相对模糊的东西。所以在写程序前,要先弄清楚自己到底要做什么,然后将自己的思想表达给计算机——这个过程就是CODING。
RPG的长处在于数据库处理,界面交互能力倒是其次。所以最开始需要了解一些关于数据库文件的相关知识(这里就只强调跟400有关的)。在下面的操作中,假设朋友已经会用STRPDM,会文件的COPY,修改。
数据文件PF:COPY一个已经有的比较快点。然后修改一下里面的数据,就是自己的。
A*假设文件名字叫BAE
A
R BAER
ß记录名字
A
AREA
3
COLHDG('AREA CODE') ßfield
A
AREANM 22 COLHDG('AREA DESC ')ßfield
*
A
K AREA
ßKey,可选
关于域定义的参考,请在程序里面输入,然后在该行按F4,再在要看得参数上按F1,就可以得到详细信息。
数据文件LF:逻辑文件的作用是按特定的关键字顺序来检索数据库里面的记录。LF中的域定义可以是任意顺序,不必跟PF中顺序的一致。更进一步,LF可以先过滤一部分的记录,减少搜索的范围。下面先看LF如何定义,具体使用程序中再说:
A
R BAER
A
PFILE(BAE) ß表示这个LF引用的是BAE文件
A
K AREA
ß搜索关键字是AREA CODE
这个是简单的,再看一个稍微复杂点的:
A
R BAER
A
PFILE(BAE)
A
K AREANM
A
S AREA
COMP(EQ '001')
上面的片断里面,关键字S表示“选择”,COMP表示比较,EQ表示等于。整句连起来就是:只选择AREA等于001的那些记录。
PS:如果一个PF每个库里面都有,如何确保被引用的就是自己希望的那个?将目标文件放在位于库列表的最上面的库里面。
DDS的创建,有些朋友用SDU(屏幕设计工具)比较快。但是如果是有类似的界面,则COPY一下比较方便。以下片断是几乎每个DDS都要的,除了REF那句可选以外。
A* 假设显示文件名字叫EX001D
A
DSPSIZ(24 80 *DS3)ß设定显示屏大小
A
REF(*LIBL/BAE
A
CHGINPDFT
A
PRINT
再来看看接下来要定义什么东西:
A
R C0
ß显示画面的名字
A
CA11(11 ' 退出 ')
A
CF08(08 ' 测试 ')
现在我们知道我们有一个显示画面叫C0(因为一个程序可能不止一个画面,这样需要定义不同的画面来处理不同的事务);而且这个画面还有3个命令键可以响应:F11,F8,ENTER(ENTER是系统默认的处理键)
再给这个画面添上几个域:
如上,
a.001和008行定义了2个显示常量,在屏幕上起提示和说明作用;
b.002行定义了一个选择域VSELEC,R表示是参考数据库里面已经有的域格式,B代表输入输出双向(双向的意思就是域里面的信息被程序修改了以后还可以反馈给画面),
5 38表示在第5行第38列,REFFLD(DICT/SELEC DICT
c.006行表示一个自己定义的域,名字叫VNAME,
6个字符长,I表示只做输入用
d.009行表示定义了一个VDDATE域,用来显示日期。010行表示显示控制:HI高亮、UL下划线。
e.008行的81是一个指示符,意思是当81号指示符是1的时候,“查询日期”才显示。
这样,显示文件就算定义完毕。
一个程序划分的粗一点,也就是2个部分:一是数据定义,一是执行代码。数据定义包括了文件引用(相当于C语言里面的头文件)、内部DS定义、普通常量等等;执行代码则包括主过程和子程序,也就是程序的主体及要调用的子函数。(详细定义方式请参见RPG400 REFERENCE)。
整个程序的执行过程如下:
定义部分(包括H/F/E/I/D等)à程序初始化(如果有INZ函数则自动执行,否则就是用户自己定义的变量初始化程序,也可以2个都执行)àMAIN循环(包括人机交互、数据处理、反馈)à退出(用户按退出命令键或者程序自动退出)。
如果用代码的表示方式来讲,就是如下的结构:
H
Y
ß头文件定义
F*----------------------------------------
FBAE
FBAE
F
BAE KRENAMEBAE2
F*请注意以上的2句:在使用不同LF检索同一个PF的时候,由于PF记录名字相同而导致一个冲突,这里就通过将记录名字重新命名为BAE2而避免这个问题。
FEX001D CF E
WORKSTN ß显示界面
I* 下面定义一个DS结构,示范用
I@PARM DS
ß结构名字叫@PARM
I
1 6 #FCDDI ß结构体内部的域
I
7 12 #TCDDI ß起止范围可以不连续
C* 下面进入代码段,包括初始化,子程序
C
*INZSR
BEGSR
ß本片断可以放在程序的任何地方
C
MOVE *OFF
INDEX 40 ß但无论放哪里都是最先执行
C
MOVE *ZERO
RESULT 40
C
ENDSR
C*请注意以上的2句,最后2个40的位置错开了一位,但是意义完全不一样。第一个表示是INDEX变量的长度是40,类型是字符型(默认的,可以省略);第二行的40表示RESULT长度是4,小数点位置在0位——这是个数字型的变量。在用F4查看的时候,会很清楚地看到区别。所以MOVE到变量的数据也不一样(*OFF是字符’
C* 主体部分,包括接受命令和处理
C* 往下就是子程序定义了,包括按钮处理在里面
C
MAIN BEGSR
C EXFMTC0 ß这句是让C0画面获得焦点成为活动画面,程序就停在这个地方,直到输入完数据按了F11/F8/ENTER中的一个。当MAIN执行完毕,程序会从上面的012行跳转到010行,继续执行,直到LR标志被置ON才退出整个程序。当再进来的时候,程序会再次停在这个地方,等待用户命令。
C* F11 = QUIT
C
*IN11 IFEQ
*ON
C SETON
LR
C ELSE
C* F8 = TEST
C
*IN08 IFEQ *ON
C VSELEC IFEQ '1'
C
MOVE 'AAAA'
VNAME
C
ENDIF
C
VSELEC IFEQ
'2'
C
MOVEL'BB'
VNAME
ß请注意MOVE和MOVEL的区别
C
ENDIF
C
ELSE
C* 如果有按键,既不是F11,也不是F8,那么就只有ENTER
C
MOVE 20040623 VDDATE ß这个域是数字型的,外面不加引号
C
EXSR SEARCH
ß执行一个搜索子程序
C
ENDIF
C
ENDIF
C
ENDSR
C*
C
SEARCH
BEGSR
C
*LOVAL SETLLBAE ß先将游标停到最低点,然后遍历整个数据库
C
READ BAE
92
C
*IN92
DOWEQ*OFF
C
MOVELAREANM LIST
C
READ BAE 92
C
ENDDO
C* 上面的片断中READ数据库,如果有记录,那么结果指示符92为OFF状态。如果没有读到记录(到文件末尾了?)就会置为ON。通过检测这个指示符状态可以完成遍历。
C* 下面再来试验一下KEY是如何工作的。
C
KBAE KLIST
ß定义一个搜索键
C
KFLD
KNAME
C*
C
MOVE ‘AAA’ KNAME
ß要查找的目标
C
*LOVAL
SETLLBAE
ß还原游标位置
C
KBAE
CHAINBAE
93 ß找到名字为AAA,93就置OFF
C
*IN93
DOWEQ*OFF
C
MOVE AREANM TMPSTR
C
KCUSHD
READECUSHD
93ß如果数据库有重复记录
就多次查找
C
ENDDO
C
ENDSR
关于KLIST的使用:KLIST中FLD的定义必须跟要检索的目标LF中的域一一对应,但可以只有部分。比如LF中定义5个KEY域,分别是1
2 3 4 5,那么KLIST中的定义可以有1,1 2,1 2 3,但不能是2 3。各个对应的域的类型、大小都必须一样。
编译过程可以排除大部分的明显错误:字符拼错、未定义的变量、重复定义。编译完会产生一个SPLF,里面包含错误列表。编译过程不排除逻辑错误。
去掉逻辑错误就是调试的任务。比如A
B两个变量,A 12CHAR, B 8CHAR。希望去掉A的高4位,那么MOVE A B, 再MOVE B A就可以。但是这中间如果不CLEAR A,那么A的内容还是没有变化的。程序大了以后逻辑比较复杂,调试有时很困难,这个时候就是需要心细加耐心。
RPG是采用一种结构化的语言,整个的结构可以采用模块化的编程方法。另外要注意的是变量的定义是即定义即用,而且都是全局的。这个将变量局部化的工作就留给程序员来完成——在其它地方不用就是咯~~~
在RPG中如果要对数据库进行读取,更新,删除,追加记录的操作,必须以相对应的方式说明对这个文件的引用。关于对数据库各种操作的组合及相应的文件引用声明,总结如下:
只从文件读取纪录
FFILENAME IF E
K DISK
只向文件里面写纪录而不读取
FFILENAME O E
DISK
读取纪录并更改和/或删除,不追加纪录
FFILENAME UF E
K DISK
读取纪录并更改和/或删除,且追加纪录
FFILENAME UF E
K
DISK
A
读取纪录和追加纪录,不更新和删除
FFILENAME IF E
K
DISK
A
需要注意的是对文件的操作必须和声明相对应,即有追加调用声明必须有WRITE, 有更新或删除声明必须有UPDAT和DELET操作。
在对文件进行操作的时候,通常会用到指示器来判断对数据库的操作是否成功的情况,关于指示器的位置及其所代表的意义,图示如下:
对文件进行更新或者删除操作的时候,需要注意的一点是更新和删除属于独占操作,同一时间只能为一个SESSION所独占,因而如果有一个SESSION锁定一条纪录,之后再有其他SESSION想以独占的方式读取这个纪录的时候,就会发生显示界面停滞60秒的情况,所以这种现象必须避免。
这种现象的避免相对来说在带有显示界面的程序中更为重要。因为中间有停顿的过程,所以如果在停顿前锁住某一条纪录,整个停顿期间其他人都不能试图以独占的方式来读取纪录。考虑到这种情况,独占的时间必须要尽可能短。对文件声明UF的时候,一般情况下在对文件纪录进行读取操作的时候,在下面的指示器前的H的位置加上N,这样文件就不是以独占的方式进行读取。
CL0N01N02N03FACTOR1+++OPCDEFACTOR2+++RESULTLENDHHILOEQCOMMENTS++++
C
SDKY
在确认需要更新的时候,可以在临更新前锁住纪录,在对需要改变的字段赋值以后,立即进行更新操作。尽可能减少其间的代码以减少独占的时间来防止出现停滞的现象。
COMIT和ROLBK主要目的是为了数据的统一性, 一般用在要同时对几个数据库进行增,删,改, 确保几个数据库都能正确写入,删除,更新数据, 在程序(CL或RPG都可以, 其他语言不清楚)中, 只有执行了COMIT命令后,数据操作才真正被执行。 只要任何一个数据库的操作出错, 可以用ROLBK命令将之前的数据回档。这样的程序, 如果因为某种原因(如被其他用户强行终止, 短电...)而终止,系统会自动ROLLBACK。
对需要进行COMIT的文件的声明:
FFILENAMEIPEAF........L..I........DEVICE+......KEXIT++ENTRY+A....U
FFILENAMEUF E K DISK
KCOMIT
数据库纪录的写入或者更新等都不变,有变动的就是根据实际的条件进行确认或者回滚。
CL0N01N02N03FACTOR1+++OPCDEFACTOR2+++RESULTLENDHHILOEQCOMMENTS++++
C
ROLBK
CL0N01N02N03FACTOR1+++OPCDEFACTOR2+++RESULTLENDHHILOEQCOMMENTS++++
C COMIT
带有COMIT的RPG程序一般通过CL程序进行调用,在调用这个程序的时候有一些针对COMIT的操作,包括:
1、创建日志和日志收集器 CRTJRN 和CRTJRNRCV
2、把PF加入日志 STRJRNPF
3、用CL 执行STRCMTCTL和 ENDCMTCTL上面具体用法去查CL REFERENCE
这样任何对该文件的修改都会记日志,当碰到COMIT 命令时确认修改,碰到ROLBK放弃更新.关于后两步的部分代码如下:
STRJRNPF FILE(FILENAME1)
JRN(JOURNAL)
STRJRNPF FILE(FILENAME2)
JRN(JOURNAL)
STRCMTCTL LCKLVL(*CHG)
CALL PGM(PGMNAME)
PARM(&PARM1 &PARM2)
ENDCMTCTL
ENDJRNPF FILE(FILENAME1)
JRN(JOURNAL)
ENDJRNPF FILE(FILENAME2)
JRN(JOURNAL)
1、PF定义:
Columns . . . : 1 71
Browse QINGZHOU/QDDSSRC
SEU==>
REFILE FMT A* .....A*.
1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
*************** Beginning of data *************************************
****************** End of data
****************************************
F3=Exit F5=Refresh F9=Retrieve F10=Cursor F11=Toggle F12=Cancel F16=Repeat find
F24=More keys
(C) COPYRIGHT IBM CORP. 1981, 2000. |
Columns . . . : 1 71
Browse
QINGZHOU/QDDSSRC SEU==>
INVOICE
FMT A* .....A*.
1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
*************** Beginning of data
*************************************
****************** End of data ****************************************
F3=Exit F5=Refresh F9=Retrieve F10=Cursor F11=Toggle F12=Cancel F16=Repeat find
F24=More keys
|
2、SDA设计subfile:
A、使用SDA设计子文件:
Design Screens
Type choices, press Enter.
Source file . . . . . . . . QDDSSRC Name, F4 for
list
Library . . . . . .
. . . QINGZHOU Name, *LIBL, *CURLIB
Member . . . . . . . . . . subfile1 Name, F4 for
list
F3=Exit F4=Prompt F12=Cancel
|
Work with Display Records
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU
Source type . . . : DSPF
Type options, press Enter.
1=Add
2=Edit comments
3=Copy 4=Delete
7=Rename
8=Select keywords
12=Design image
Opt Order Record
Type
Related Subfile
Date
DDS Error 1
SFL01
(No records in file)
Bottom F3=Exit F12=Cancel F14=File-level
keywords
F15=File-level comments F17=Subset F24=More keys
|
Add New
Record
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU Source
type . . . : DSPF
Type choices, press Enter.
New record . . . . . . . . . . . . . . . SFL01
Name
Type . . . . . . . . . . . . . . . . .
. SFL
RECORD, USRDFN
SFL,
SFLMSG
WINDOW, WDWSFL
PULDWN, PDNSFL
MNUBAR
F3=Exit F5=Refresh F12=Cancel
|
Add
New Record
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU
Source type . . . : DSPF
Type choices, press Enter.
New record . . . . . . . . . . . . . . . SFL01
Name
Type . . . . . . . . . . . . . . . . .
. SFL
RECORD, USRDFN
SFL,
SFLMSG
WINDOW, WDWSFL
PULDWN, PDNSFL
MNUBAR
Subfile control record . . . . . . . . . SFL
F3=Exit F5=Refresh F12=Cancel
|
B、子文件主体设计:
Work with Display Records
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU
Source type . . . : DSPF
Type options, press Enter.
1=Add 2=Edit
comments
3=Copy
4=Delete
7=Rename
8=Select keywords
12=Design image
Opt Order Record Type Related
Subfile Date
DDS Error
12 10 SFL01
SFL
20 SFL
Bottom F3=Exit
F12=Cancel F14=File-level
keywords
F15=File-level comments F17=Subset F24=More keys
Record
SFL01 added to member SUBFILE1.
+ |
Select Database Files
Type options and names, press
Enter.
1=Display database field
list
2=Select all fields for input
(I)
3=Select all fields for output
(O)
4=Select all fields for both (B)
input and output
Option Database File Library Record
1
INVOICE
QINGZHOU
F3=Exit F4=Prompt F12=Cancel
|
Select Database Records
Database file . . . . . : INVOICE Library
. . . : QINGZHOU
Type options, press Enter.
1=Select
Option Record
1 IV_FMT
Bottom
F3=Exit F12=Cancel
|
Select Database Fields
Record . . . : IV_FMT
Type information, press Enter.
Number of fields to roll . . . . . . . . . . . . . . . . .
. 8
Name of field to search for . .
. . . . . . . . . . . . . . .
Type options, press Enter.
1=Display extended field
description
2=Select for input (I), 3=Select
for output (O), 4=Select for both (B)
Option Field
Length Type Column Heading
3 IV_CODE
3 IV_NAME
12 O 名称
3 IV_QUTITY 7,0 P 总数
3 IV_AMOUNT 15,2 P 总金额
3 IV_DESC
30 O 备注
|
1:IV_CODE 2:IV_NAME 3:IV_QUTITY
4:IV_AMOUNT 5:IV_DESC
|
&1
&2
&3
&4
1:IV_CODE 2:IV_NAME 3:IV_QUTITY
4:IV_AMOUNT 5:IV_DESC
|
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
1:IV_DESC
|
Work with Fields
Record . . . : SFL01
Type information, press Enter.
Number of fields to roll . . . .
. . . . . . . . . . . . . . 6
Type options, change values, press
Enter.
1=Select keywords 4=Delete field
Option Order Field Type Use Length Row/Col Ref Condition Overlap
10 IV_CODE
O
5 07 015 Y
20 IV_NAME O O 12 07 024 Y
30 IV_QUTITY
O
7,0 07 041 Y
40 IV_AMOUNT
O
15,2 07 056 Y
50 OPTX
I
1 07 012
Bottom Add
H
Hidden
Add
P
Program-to-system
F3=Exit F6=Sort by row/column F12=Cancel
|
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
Subfile
keywords...: SFLPAG:
12
SFLLIN:
0
|
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
1:IV_DESC
|
C、定义子文件隐藏字段:
Work with Fields
Record . . . : SFL01
Type information, press Enter.
Number of fields to roll . . . .
. . . . . . . . . . . . . . 6
Type options, change values, press
Enter.
1=Select keywords 4=Delete field
Option Order Field Type Use Length Row/Col Ref Condition Overlap
10 IV_CODE
O
5 07 015 Y
20 IV_NAME O O 12 07 024 Y
30 IV_QUTITY
O
7,0 07 041 Y
40 IV_AMOUNT
O
15,2 07 056 Y
50 OPTX
I
1 07 012
1
60 IV_DESC
H
30
Bottom Add
H
Hidden
Add
P
Program-to-system
F3=Exit F6=Sort by row/column F12=Cancel
|
Select Field Keywords
Field . . . . . : IV_DESC
Usage . . : H
Length . . . . : 30
Type choices, press Enter.
Y=Yes For Field
Type
Keying options . . . . . . . . .
Hidden, Input or Both
General keywords . . . . . . . .
All types
Database reference . . . . . . . Y Hidden, Input,
Output, Both
TEXT keyword . . . . . . . . . .
F3=Exit F4=Display Selected
Keywords F12=Cancel
|
Define Database Reference
Field . . . . . : IV_DESC
Usage . . : H
Length . . . . : 30
Type choices, press Enter.
Keyword
Reference field . . . . . . . . REFFLD Y
Y=Yes
Reference current DDS source . . *SRC
Y=Yes
Field (if different) . . . . .
.
IV_DESC
Name
Database file . . . . . . . . .
INVOICE
Name
Library . . . . . . . . . . . QINGZHOU Name, *LIBL, *CURLIB Record . . . . . . .
. . . . .
Name
Override existing field
definition:
New field length . .
. . . . .
+nnnn,
-nnnn, nnnn New decimal
positions . . . .
+n, -n, nn
New keyboard shift .
. . . . .
N A X W I D M
J O E G
Ignore previously
specified:
Validity check . . . . . . . . DLTCHK
Y=Yes
Editing . . . . . . . . . . . DLTEDT
Y=Yes
F3=Exit F12=Cancel
|
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
1:IV_DESC
|
Exit SDA Work Screen
Select one of the following:
1. Save work since
last Enter and exit work screen
2. Exit without
saving any work done on the work screen
3. Resume work
screen session
Selection
1
F12=Cancel
|
D、子文件控制设计:
Work with Display Records
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU
Source type . . . : DSPF Type options, press Enter.
1=Add
2=Edit comments
3=Copy
4=Delete
7=Rename 8=Select keywords
12=Design image
Opt Order Record
Type
Related Subfile
Date
DDS Error
10 SFL01
SFL
12 20 SFL
Bottom
F3=Exit
F12=Cancel F14=File-level
keywords
F15=File-level comments F17=Subset F24=More keys
Image
updated for record SFL01.
|
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
Work
screen for SFL |
*date
发票查询
*sysname
*username
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
1:IV_DESC
|
DD/DD/DD
发票查询
SSSSSSSS
5= 明细查询
UUUUUUUUUU
# &2p &3p
&4p
&5p
-- ----- ------------ ---------
--------------------
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
1:IV_DESC 2:IV_CODE 3:IV_NAME
4:IV_QUTITY 5:IV_AMOUNT 6:IV_DESC
|
DD/DD/DD
发票查询
SSSSSSSS
UUUUUUUUUU
5= 明细查询
# 发票 名称
总数
总金额
-- ----- ------------ ----------
---------------------
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666
-6,666,666,666,666.66
1:IV_DESC 2:IV_CODE 3:IV_NAME
4:IV_QUTITY 5:IV_AMOUNT 6:IV_DESC
|
E、子文件控制关键字:
Work with Display
Records
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU Source
type . . . : DSPF
Type options, press Enter.
1=Add
2=Edit comments
3=Copy
4=Delete
7=Rename
8=Select keywords
12=Design image
Opt Order Record
Type
Related Subfile Date
DDS Error
10 SFL01
SFL
8 20 SFL
Bottom
F3=Exit
F12=Cancel F14=File-level
keywords
F15=File-level comments F17=Subset F24=More keys
|
Select Subfile Control Keywords
Subfile control record . . . . . . . .
. : SFL
Type choices, press Enter.
Y=Yes
General keywords . . . . . . . . Y
Subfile display layout . . . . . Y
Subfile messages . . . . . . . .
Select record keywords . . . . . Y
TEXT keyword . . . . . . . . . .
F3=Exit F4=Display Selected
Keywords F12=Cancel
|
Define General Keywords
Subfile control record . . . . . . . .
. : SFL
Type choices, press Enter.
Keyword
Related subfile record . . . . .
. . SFLCTL SFL01
Name
Subfile cursor relative record .
. . SFLCSRRRN
Name
Subfile mode . . . . . . . . . .
. . SFLMODE
Name
Y=Yes
Indicators/+ Display subfile records . . . . . . SFLDSP Y
N30
Display control record . . . . .
. . SFLDSPCTL Y
N30
Initialize subfile fields . . . . . SFLINZ
Delete subfile area . . . . . . . . SFLDLT
Clear subfile records . . . . . . . SFLCLR
30
Indicate more records . . . . . . . SFLEND
N30
SFLEND parameter . . . . . . . . *MORE
SFLEND
parameter . . . . . . .
. *SCRBAR
*MORE ... Record not active . . . . . . . . . SFLRNA
More... F3=Exit F12=Cancel
|
Define Display
Layout
Subfile control record . . . . . . . .
. : SFL
Type values, press Enter.
Keyword Number
Records in subfile . . . . . . .
. . . SFLSIZ 12
Program-to-system
field . . . . . .
Records per display . . . . . . . . . SFLPAG 200
Spaces between records . . . . .
. . . SFLLIN
F3=Exit F12=Cancel
|
Select Record Keywords
Record . . . : SFL
Type choices, press Enter.
Y=Yes
General keywords . . . . . . . . Indicator keywords . . . . . . . Y
Application
help . . . . . . . .
Help keywords . . . . . . . . .
.
Output keywords . . . . . . . .
.
Input keywords . . . . . . . . .
Overlay keywords . . . . . . . .
Print keywords . . . . . . . . .
ALTNAME keyword . . . . . . . .
.
TEXT keyword . . . . . . . . . .
F3=Exit F4=Display Selected
Keywords F12=Cancel
|
Define Indicator Keywords
Record . . . : SFL
Type keywords and parameters, press
Enter.
Conditioned keywords: CFnn
CAnn CLEAR PAGEDOWN/ROLLUP PAGEUP/ROLLDOWN
HOME HELP HLPRTN
Unconditioned keywords: INDTXT VLDCMDKEY
SETOF CHANGE
Keyword Indicators/+ Resp Text
CA03
03 Exit
Bottom F3=Exit F12=Cancel
|
Select Record Keywords
Record . . . : SFL
Type choices, press Enter.
Y=Yes
General keywords . . . . . . . . Indicator keywords . . . . . . .
Application
help . . . . . . . .
Help keywords . . . . . . . . .
.
Output keywords . . . . . . . .
.
Input keywords . . . . . . . . .
Overlay keywords . . . . . . . . Y
Print keywords . . . . . . . . .
ALTNAME keyword . . . . . . . .
.
TEXT keyword . . . . . . . . . .
F3=Exit F4=Display Selected
Keywords F12=Cancel
|
Select Overlay Keywords
Record . . . : SFL
Type choices, press Enter.
Keyword
Y=Yes Indicators/+ Roll Overlay without erasing . . . . . . OVERLAY Y
Retain data on re-display . . . . . PUTRETAIN
Protect all input fields . . . .
. . PROTECT Activate OVRDTA and OVRATR . . .
. . PUTOVR
Override Data . . . . . . . . . . . OVRDTA
Override Attribute . . . . . . .
. . OVRATR
Initialize input fields . . . . . . INZINP
Reset all modified data tags . .
. . MDTOFF
MDTOFF parameter . .
. . . . . . .
*UNPR
*ALL
Erase all input fields . . . . .
. . ERASEINP
ERASEINP parameter .
. . . . . . .
*MDTON
*ALL
Erase all records below . . . . . . ERASE
F3=Exit F12=Cancel
|
Work with Display Records
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU
Source type . . . : DSPF
Type options, press Enter.
1=Add
2=Edit comments
3=Copy
4=Delete
7=Rename
8=Select keywords
12=Design image
Opt Order Record
Type
Related Subfile
Date
DDS Error 1
SFL01T
10 SFL01
SFL
20 SFL
Bottom
F3=Exit
F12=Cancel F14=File-level
keywords
F15=File-level comments F17=Subset F24=More keys
Keywords updated for record SFL |
Select Additional Records for Display
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU
Source type . . . : DSPF
Type options, press Enter.
1,2,3=Select for display as
additional record
Option Record
Type Status 1
2
3
2 SFL01
SFL
3 SFL
SFL01T
RECORD In use
Bottom F3=Exit F5=Refresh F12=Cancel
|
DD/DD/DD
发票查询
SSSSSSSS
5= 明细查询
UUUUUUUUUU
# 发票
名称
总数
总金额
-- -----
------------
----------
---------------------
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66 I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
Additional record(s) selected: SFL01
SFL |
DD/DD/DD
发票查询
SSSSSSSS
5= 明细查询
UUUUUUUUUU
# 发票
名称
总数
总金额
-- -----
------------
----------
---------------------
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66 I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO
OOOOOOOOOOOO
-6,666,666
-6,666,666,666,666.66
I OOOOO OOOOOOOOOOOO -6,666,666 -6,666,666,666,666.66
'F3=@CCCC@'
Additional record(s) selected: SFL01
SFL |
Work with Display Records
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU
Source type . . . : DSPF
Type options, press Enter.
1=Add
2=Edit comments
3=Copy
4=Delete
7=Rename
8=Select keywords
12=Design image
Opt Order Record
Type
Related Subfile Date
DDS Error
10 SFL01
SFL
20 SFL
30 SFL01T
RECORD
Bottom F3=Exit
F12=Cancel F14=File-level
keywords
F15=File-level comments F17=Subset F24=More
keys
Record
SFL01T added to member SUBFILE1.
|
F、设计显示记录窗体:
Work with Display Records
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU
Source type . . . : DSPF
Type options, press Enter.
1=Add
2=Edit comments
3=Copy
4=Delete
7=Rename
8=Select keywords
12=Design image
Opt Order Record
Type
Related Subfile
Date
DDS Error 1
DSP01W
10 SFL01
SFL
20 SFL
30 SFL01T
RECORD
Bottom
F3=Exit
F12=Cancel F14=File-level
keywords
F15=File-level comments F17=Subset F24=More keys
Record
SFL01T added to member SUBFILE1. |
Add New Record
File . . . . . . : QDDSSRC
Member . . . . . . :
SUBFILE1 Library . . . . : QINGZHOU
Source type . . . : DSPF
Type choices, press Enter.
New record . . . . . . . . . . . . . . . DSP01W
Name
Type . . . . . . . . . . . . . . . . .
. WINDOW RECORD,
USRDFN
SFL,
SFLMSG
WINDOW, WDWSFL
PULDWN,
PDNSFL
MNUBAR
F3=Exit F5=Refresh F12=Cancel
|
Select Window Keywords
Window record . . . . . . . . . . . . .
: DSP01W
Type choices, press Enter.
Y=Yes
General keywords . . . . . . . . Y
Select record keywords . . . . .
TEXT keyword . . . . . . . . . .
F3=Exit F4=Display Selected
Keywords F12=Cancel
|
Select General Keywords
Window record . . . . . . . . . . . . .
: DSP01W
Type choices, press Enter.
Keyword
Y=Yes Indicators/+
Window parameters . . . . . . . . . . . . WINDOW Y
Select
parameters . . . . . . . . . .
.
Y
Window borders . . . . . . . . .
. . . . . WDWBORDER
Select
parameters . . . . . . . . . .
. Remove windows . . . . . . . . .
. . . . . RMVWDW
User Restore Display . . . . . .
. . . . . USRRSTDSP
F3=Exit F12=Cancel
|
Define Window Parameters
Record . . . : DSP01W
Keyword . . : WINDOW
Referenced window . . . . . . . . . . . .
Name
- |