笔记.docx
- 文档编号:15565955
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:12
- 大小:72.75KB
笔记.docx
《笔记.docx》由会员分享,可在线阅读,更多相关《笔记.docx(12页珍藏版)》请在冰点文库上搜索。
笔记
程序命名:
第一位
A标准系统
G大陆模块
C客制模块
第二位/第三位
模块英文名称简写
第三位
I维护,r报有,s参数,q查询,p批处理,t交易处理
以cxrt001为例
C说明是客制(我们一般自制的程序都算是客制的)
XR是模块名的简写
T是说这个程序是交易处理
后面的001是流水号
程序命名规范比较重要,不按标准命名可能会出问题
程序代码文件.4gl放在前三位\4gl文件夹下比如cxrt001就放在cxr\4gl\cxrt001.4gl
程序画面文件.4fd放在前三位\fdl文件夹下比如cxrt001就放在cxr\4fd\cxrt001.4fd
函数命名:
程序名后四位_XXX(比如cxrt001里面的函数就是t001_XXXXX),后缀流水号长度无限制
共享程序(公共函数)命名:
cl_XXXXX(X为1-17位)路径:
u1/topprod/tiptop>lib
子程序命名:
一般子程序,s_XXXX(X为1-18位);查询子程序,q_XXXX(X为1-18位);子程序路径:
u1/topprod/tiptop>sub;查询子程序路径:
u1/topprod/tiptop>qry
global(全局变量):
g_XXX
local(局部变量):
l_XXX
parameter(传递性/参数变量):
p_XXX
数据库表的命名:
以pmm表为例
表名:
程序自带的标准表pmm_file;如果是我们客制的,就在前面+tc,比如tc_pmm_file
字段名:
pmm01,pmm002…;tc_pmm01,tc_pmm002…
索引:
pmm_01,pmm_02;tc_pmm_01,tc_pmm_02
主键:
pmm_PK;tc_pmm_pk
SecureCRT使用命令
打开文件夹cd文件夹名,比如cdcxr
返回上级文件夹cd..
查看文件夹内容ls
上传文件:
rz会弹出窗口让你选择上传文件
上传并覆盖:
rz–y
下载:
sz文件名,比如szcxrt001.4gl
开启程序ERP系统:
Udm7
Exe2udm_tree
Exe2程序号(在任何目录下都可以打开程序)
r.r2程序号(需要在程序所在的目录下才能打开)
程序相关指令
-r.c2编译源代码.4gl(产生.42m文件)比如…\cxr\4gl>r.c2cxrt100
-r.l2将42m链接至42r
-r.f2编译画面.4fd(产生.42f文件)比如…\cxr\4fd>r.f2cxrt100
-r.gf预览编译后的画面(42f档案)后面要带参数一般是2c比如…\cxr\4fd>r.gfcxrt1002c
值得注意的是,预览后那些程序需要显示中文的地方都会被找出来,然后可以在p_perlang里面编辑
-r.r2执行42r程序比如…\cxr\4gl>r.r2cxrt100
-rd2+呼叫Debugger(打开Debug模式)r.d2+cxrt100
-r.s2制作dbschema文件
生成后位置在/u1/topprod/tiptop/schema/运营中心名/用户名.sch
环境架构
模块下的目录
4gl:
程序原代码
42m:
4gl经过r.c2编译后的文件
42r:
42m经过r.l2编译后的文件
4fd:
画面档的原代码
per:
tiptop3.0之前的程序画面档原代码
42f:
4fd经过r.f2编译后的文件
sch:
由数据库汇出的数据结构文件
sdd:
画面档案规格说明
工作目录
Ds4gl2—置放程序执行时所必需的执行程序稿
bin—置放程序执行时所必需的执行程序稿
schema—由数据库汇出的数据结构文件
demo—置放参考用标准程序的目录
doc—存放图片,说明文件,流程文件的目录
log—程序错误信息记录档
out—历史打印报表存放目录
tmp—存放数据库备及其它暂存数据
语法
定义变量
Define变量名变量类型
比如
DEFINEg_msgSTRING
DEFINExchar(10)
还有一种特别的定义方式,变量类型参照数据库字段
Define变量字段名like系统中存在的表.字段名
比如
DEFINEalikeaaa_file.aaa001
DEFINEyliketype_file.num5
定义数组(注意最后一个字段没有逗号)
Define数组名RECORD
字段名1类型,
字段名2类型,
……….
字段名n类型
ENDRECORD
比如
DEFINEAAARECORD
AAA1likeaaa_file.aaa001,
AAA2string,
AAA3char(10)
ENDRECORD
DEFINEg_aaaRECORDLIKEaaa_file.*(定义一个数组,参考某个表)
除了RECORD之外,还有DYNAMICARRAYOFRECORD(长度可变的数组)
变量类型
字符:
char/varchar/string
备注:
char固定长度;varchar变动长度;string字符长度不用定义(30000以内均可,数据库不支持该变量,不支持SQL语句)
日期:
date/datetime
数值:
integer/smallint/float/smallfloat/decimal(p,s)/money
大对象:
byte/text
变量的生命周期
Local(function中有效)
Module(module中共享变量,在local与global之外)
Global(global到endglobal中有效,全局变量)
赋值与表达式
与其他语言类似,只是前面多一个let
LET变量名=XXX
比如LETy=y+1
LETx=NULL
初始化
Initialize数组.*tonull(初始化变量)
比如INITIALIZEg_aaa.*TONULL
表达式
文本型相加:
使用逗号或者||来相加
文本1,文本2,文本3
文本1||文本2||文本3
比如LETl_msg=”执行”,l_msg,”成功!
”
LETl_msg=”执行”||l_msg||”成功!
”
LETg_sql=”SELECT*FROMaaa_file”,
“whereaaa01=”,x,
“ORDERBYaaa02”
注意使用||的话,如果有一个变量为空,最终结果也为空
Str[m,n](从m位开始截取,截止n位;适用于char/varchar)
a.substring(m,n)(从m位开始截取,截止n位;适用于string)
Using(针对数值或日期格式的输出格式)
Clipped(消除尾部空白,针对chan/varchar)
Spaces(输出空白键)
逻辑和循环
IF
IF语句与其他语言类似
IF条件THEN
ELSE
ENDIF
注意没有ELSEIF
CASE
Case语句也与其他语言类似
case
when条件
otherwise
endcase
While
循环语句也类似其他语言
While条件
endwhile
FOR
fori=1to100
endfor
FOREACH
但有一个比较特别的循环语句FOREACH
FOREACH
ENDFOREACH
它的作用是按照数组长度循环
比如数组有100个,那么就执行100次
类似forinti=1,i<=数组长度,i++
比如
FOREACHA
LetA[i].xxx=i
LETi=i+1
ENDFOREACH
还有一种方式是用于数据库,执行SELECT语句后返回多少行数据,就会循环多少次
比如配合后面要说到的CURSOR语句,把SELECT返回的数据填充到数组中
LETg_sql="SELECT*FROMaaa_file"
PREPAREp1FROMg_sql
DECLAREaaa_csCURSORFORp1
FOREACHaaa_csintoA[i].*
LETi=i+1
ENDFOREACH
开关窗口
OPENWINDOW窗口名WITHFORM"路径"
ATTRIBUTE(STYLE=g_win_styleCLIPPED)
CLOSEWINDOW窗口名
比如
OPENWINDOWt001_wWITHFORM"cxr/42f/cxrt001"
ATTRIBUTE(STYLE=g_win_styleCLIPPED)
(各种代码)
.CLOSEWINDOWt001_w
交互式指令
INPUT/DISPLAY输入/输出
INPUT变量1,变量2,变量3…FROM屏幕变量1,屏幕变量2,屏幕变量3…
ENDINPUT
DISPLAY变量1,变量2,变量3…TO屏幕变量1,屏幕变量2,屏幕变量3…
ENDDISPLAY
比如
INPUTAAA1,AAA2FROMA1,A2#(把画面里A1,A2栏位的数据,输入到变量AAA1,AAA2)
ENDINPUT
DISPLAYAAA1,AAA2FROMA1,A2#(把变量AAA1,AAA2,输出到屏幕上的栏位A1,A2)
ENDDISPLAY
另外还能输入/输出数组
INPUTARRAY数组名FROM屏幕数组.*
ENDINPUT
DISPLAYARRAY数组名TO屏幕数组.*
ENDDISPLAY
关于屏幕变量
在做画面的时候,每增加一个可以输入输出东西的栏位,
右上角就会出现这个栏位同名的屏幕变量
可以右键在这里新建一个数组,然后把这些屏幕变量拉进这个数组
关于按钮
跟其他程序的编辑不同,直接在INPUT/DISPLAY里面写onactionXXX,就会在执行到这一段的时候,自动生成按钮,位置在屏幕上方或者右边,在p_zz,Action维护里面更改.标准程序里面的查询/更改/删除/打印之类的按钮就是这么来的,可以自己看看..
比如在程序里写了ONACTIONXXX
执行到这段的时候,画面上就会出现按钮(按钮上的名字可以在p_zzAction维护里面更改)
点击就会执行ONACTION后面的代码
查询按钮
另外还有一种按钮
类似这样,放大镜的按钮
ButtonEdit控件
放大镜的图标是zoom
点击它执行的事件Action名字
然后在程序里onactioncontrol(标准一般用这个ACTION名字)里写代码就行了
一般而言代码是这样
ONACTIONCONTROLP
CASE#####
WHENINFIELD(栏位名)#料号
CALLcl_init_qry_var()
LETg_qryparam.form="查询小程序的名字"##在p_qry里面可以建
LETg_qryparam.state="c"
#c=construct(查询时候用),i=input(输入的时候用)
CALLcl_create_qry()RETURNINGg_qryparam.multiret
DISPLAYg_qryparam.multiretTO栏位名
NEXTFIELD栏位名
WHENINFIELD(栏位2)
…….
……
WHENINFIELD(栏位3)
…….
……
ENDCASE
其他事件
BeforeinputAfter等事件可以参考教材的PPT
CONSTRUCT输入条件
这个和INPUT基本差不多,教材也比较详细,主要作用是产生SQL语句里的Where条件,返回的是一个字符串
最好在做画面的时候,把栏位的名字,改成和表字段的名字一样.
CONSTRUCTBYNAME字符串名ON栏位1,栏位2,栏位3…..
ENDCONSTRUCT
这时你在aaa01栏位里输入了10,字符串就变成“aaa01=10”
在其他栏位里面加,它会自动在后面AND更多条件
如果没有输入任何东西就会等于”1=1”
总之,在拼SQL语句的时候where字符串AND其他条件就行了
CONSTRUCTBYNAMEg_wcONXXXX
ENDCONSTRUCT
Letg_sql=”Select*fromXXX表”
“where“,g_wc,
“ANDXXX=XXX”,
“ANDXXX=XXX”,
“ORDERBYXXX”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 笔记