函数P75 数值函数
1、绝对值 ABS( 数值表达式 ) 2、取整 INT( 数值表达式 ) 3、最大值MAX(N1,N2,…)4、最小值 MIN( N1,N2,…) 5、平方根SQRT( 数值表达式 ) 6、EXP( 数值表达式 )=eX 7、LOG( 数值表达式 )=LnX
8、正弦 SIN( 数值表达式 ) 9、余弦 COS( 数值表达式 ) 10、正切 TAN( 数值表达式 ) (*弧度表示)
11、0-1之间随机数 RAND([ 数值表达式 ])(数值表达式为负,从当前时钟取种子数)
12、四舍五入ROUND( 数值表达式1 , 保留位数 )*保留位数为负表示其绝对值为整数部分四舍五入的位数
字符串函数
1、字符串长度LEN( 字符表达式 )2、删尾部空格TRIM( 字符表达式 )3、删头部空格LTRIM( 字符表达式 )
4、取子串SUBSTR( 字符表达式 , 从第几个开始 ,[ 取几个字符 ]) 5、首字母大写PROPER( 字符表达式 )
6、子字符串查找AT( 字符表达式1 , 字符表达式2 )返回式1在式2的开始位置,没找到返回0,区分大小写
7、子串替换STUFF( 字符表达式1 , 数值表达式1 , 数值表达式2 , 字符表达式2 )
8、大小变小写LOWER( 字符表达式 )9、小写变大写UPPER( 字符表达式 )10、空格SPACE( 空格数量 )
11、字符串复制REPLICATE( 字符串 , 复制次数 )12、宏替换 内存变量 [, 字符串 ]
日期和时间函数
1、取系统日期DATE() 2、取系统时间TIME()3、取年份YEAR( 日期表达式 )4、取日DAY( 日期表达式 )
5、取月份MONTH( 日期表达式 )6、日期格式转换MDY( 日期表达式 )(月日年格式)
数据类型转换函数
1、字符转数值VAL( 字符表达式 )2、字符转日期CTOD( 字符表达式 )
3、日期转字符DTOC ( 日期表达式 [,1])带可选项“1”返回一个适于进行索引的日期字符串
4、数值转字符STR( 数值表达式1 [, 返回字符串长度 [, 小数部分输出位数 ]])
测试函数
1、数据类型测试TYPE( 字符表达式 )2、测试文件尾EOF([ 工作区号 | 文件别名 ])
2、测试文件头BOF([ 工作区号 | 文件别名 ])4、测试当前记录号RECNO([ 工作区号 | 文件别名 ])
5、测试库文件记录数RECCOUNT([ 工作区号 | 文件别名 ])6、测试屏幕行列坐标ROW()、COL()
7、测试是否查找成功FOUND([ 工作区号 | 文件别名 ])8、测试打印头坐标PROW()、PCOL()
数据库基本*作
内存变量赋值:1、store 表达式 to 内存变量表 2、 内存变量 = 表达式
3、save screen to 屏幕型内存变量 restore screen from 屏幕型内存变量
内存变量释放:1、release 内存变量表 2、release all [like|except 通配符 ] 3、clear memory 4、clear all
内存变量文件建立:save to 内存变量文件名 [all [like|except 通配符 ]]
内存变量恢复:restore from 内存变量文件名 [additive]无additive消除当前内存中变量,有additive保留变量
内存变量显示:1、list memory [to print] 2、display memory [to print]
内存变量输出: ?|??[ 表达式表 ] ?从当前光标所在行的下一行第0列开始显示,??从当前光标所在处开始显示
数组定义:dimension|declare 数组名1 ( 数值表达式1 [, 数值表达式2 ])[, 数组名2 ( 数值表达式3 [ 数值表达式4 ])]… 数组元素赋值:1、store 表达式 to 数组 2、 数组 = 表达式
数据库文件记录值传送到数组scatter[fields 字段表 ] to 数组 [blank] memvar [blank]
数组中的数据传送到数据库文件gather from 数组 | memvar [fields 字段表 ]
建数据库文件结构create[ 文件名 |?] 追加记录append[blank] 数据库文件打开use[ 库文件名 |?][alias 别名 ]
记录显示list | display[ 范围 ][fields 字段名表 ][for 条件 ][while 条件 ][off][to printer|file 文件名 ]
范围:record n第n条记录*作,next n下n条记录*作,all所有记录*作,rest当前到文件结束所有记录*作
off 不显示记录 关闭当前工作区数据库use 关闭当前打开的所有数据库 close databases关闭所有close all
关闭索引文件 close indexes 关闭格式文件 close format 关闭过程文件 close procedure
关闭后备文本文件 close alternate 显示数据库结构list|display structure[to printer|to file 文件名 ]
修改库结构 modify structure (生成。bak和。tbk文件,修改字段类型该字段数据丢失,不能同时修改字段名和宽度)
绝对移动go|goto[[record] 记录号 |top|bottom][in 工作区号 | 文件别名 ](第一个记录:键值最小的记录)
相对移动skip[ 移动记录数 ][in 工作区号 | 文件别名 ]插入记录insert[before][blank]before:前,blank空
逻辑删除delete[ 范围 ][for 条件 ][while 条件 ] 恢复逻辑删除recall[ 范围 ][for 条件 ][while 条件 ]
物理删除pack 物理删除所有记录zap 编辑修改edit|change[ 范围 ][fields 字段名表 ][for 条件 ][while 条件 ]
浏览编辑browse[ 范围 ][fields 字段名表 ][for 条件 ][while 条件 ][freeze 字段名 ][noappend][nodelete]
[noedit][font 字体 [, 字号 ] freeze 字段名 指定可修改的字段
替换修改replace[ 范围 ] 字段1 with 表达式1 [, 字段2 with 表达式2 …] [for 条件 ][while 条件 ]
排序 /a升序/d降序/c不区分大小写,关键字只能C、N、D型。可包含相关联工作区文件字段:别名- 字段名
sort to 文件名 on 字段1 [/a][/c][/d][, 字段2 [/a][/c][/d]…][ 范围 ][fields 字段表 ][for 条件 ][while 条件 ]
index on 关键字表达式 to 索引文件名 [for 条件 ][compact][unique][additive]多字段索引必须是C型。
compact压缩 unique惟一性索引(若有多条记录具有相同关键字表达式,索引文件只包含第一条记录。Additive不关闭先前打开的索引,新建索引文件成为主索引。关闭索引文件1、set index to 2、close index
打开索引文件1、use 库文件名 index 索引文件名表 2、set index to 索引文件名表
指定主索引set order to[ 索引文件名表中的顺序号 | 索引文件名 ] 重建索引reindex[compact]
顺序查询locate[ 范围 ][for 条件 ][while 条件 ]继续查询continue(locate中用while语句,continue无意义)
索引查询find 字符串 | 数值常量 只能查字符串或数字字符串有前导空格须用引号,否则可不必使用定界符
seek 表达式 按指定范围统计满足条件的记录count[ 范围 ][for 条件 ][while 条件 ][to 内存变量名 ]
求和:sum[ 范围 ][ 数值表达式 ][for 条件 ][while 条件 ][to 内存变量名表 |to array 数组 ]
求平均值:average[ 范围 ][ 数值表达式 ][for 条件 ][while 条件 ][to 内存变量名表 |to array 数组 ]
分类汇总:total on 关键字表达式 to 分类库文件名 [ 范围 ][fields 字段名表 ][for 条件 ][while 条件 ]
库文件复制:copy to 库文件名 [ 范围 ][fields 字段名表 ][for 条件 ][while 条件 ]
库结构复制:copy structure to 新库文件名 [fields 字段名表 ] 文件复制copy file 源文件名 to 目标文件名
库文件复制成文本数据文件:sdf复制成标准格式(各记录定长,字符无分界符)delimited非标准格式数据文件,特点:各记录不定长,每个记录以回车换行为结束标志,字段值之间用逗号分开,字符型数据用双引号括起来。
copy to 数据文件名 sdf|delimited[with 定界符 |blank][ 范围 ][fields 字段名表 ][for 条件 ][while 条件 ]
文本数据到库文件:append from 数据文件名 sdf|delimited[with 定界符 |blank][for 条件 ][fields 字段名表 ]
选择工作区select 工作区号 | 别名 删除关联set relation to
建立文件关联set relation to[ 关键字表达式 | 数值表达式 into 工作区号 | 别名 ][additive]
库文件连接join with 别名 to 新库文件名 [fields 字段名表 ][for 条件 ] 库文件更新:
update on 关键字段 from 别名 replace 字段名1 with 表达式1 [, 字段名2 with 表达式2 …][random]
建立命令文件:modify command[ 命令文件名 |?][in window 窗口名 |screen] 命令文件运行:do 命令文件名
命令文件注释:1、note 注释 2、* 注释 3、 注释 清屏命令:clear 返回命令return
accept[ 字符表达式 ]to 内存变量 接受从键盘输入的字符型数据。Input[ 字符表达式 ]to 内存变量 接受从键盘输入的数据,wait[ 字符表达式 ][ to 内存变量 ][window[nowait][timeout 等待秒数 ]等待一个字符。无字符表达式提示:press any key to continue.window使提示信息显示在系统窗口中。
格式化输出:@ 行,列 say 表达式 [picture“[@功能符串][格式符串]”][font 字体 [, 字号 ]]
格式化输入:@ 行,列 [say 表达式 ]get 内存变量 | 字段 [picture“[@功能符串][格式符串]”][range 上界 [, 下界 ]][[open]window 窗口名 ][enable|disable][valid 逻辑表达式1 ][when 逻辑表达式2 ]
window指定编辑备注字段窗口(窗口须事先定义)disable|enable是否允许存取该变量
valid检查get数据正确性,只有逻辑表达式1为真时才能移到下一个get变量。
定义文本编辑区:@ 行,列 edit 内存变量 size 行数 , 列数 font[ 字体 [, 字号 ]][scroll]
read[cycle][save]cycle定义一个循环read,可通过tab、enter回到第一个对象,save使对象能被以后的read编辑
功能符:! 小写变大写;B数值左对齐;D日期型按set date格式;E日期型按日/月/年;Z数值为0时显示空格;$ 货币格式;只支持say:( 负数加括号; C正数后加CR;X负数后加DB.只支持get:A只允许字母字符;J字符右对齐;K光标移到变量时自动删除原内容;T删除字符前后空格
格式符:X允许任何字符;#显示正负号,只许数字、空格、正负号;!小写变大写;*第一个有效数字前0变*;
。 小数点位置;, 隔三位插,;只支持say:A数值型用A替换数字; Y逻辑型T变Y,F变N,数值型用Y替换数字; $数值型货币号,字符型$替代字符; 9字符型只许0-9; 只支持get:A只允许字母;L只允许逻辑型;N只允许字母和数字;9只允许数字、正负号;$第一个有效数字前0变$;
清整个屏幕:clear 清屏幕局部区域:@ 行1,列1 [clear|clear to 行2,列2 ]
分支语句:if 条件 命令序列1 [else 命令序列2 ]endif 多分支选择语句:do case case 条件1
命令序列1 case 条件2 命令序列2 …case 条件n 命令序列n [otherwise 命令序列n+1 ]endcase
while循环语句:do while 条件 命令序列1 [loop] 命令序列2 [exit]enddo
for(给定次数)循环语句:for 循环变量 = 初值 to 终值 [step 步长 ] 命令序列 [loop][exit]endfor
scan循环:scan[ 范围 ][for 条件 ][while 条件 ] 命令序列 [loop][exit]endscan
定义过程:procedure 过程名 [parameters 形参表 ] 过程体 return[to master] 过程文件格式:procedure 过程名1 过程体1 return procedure 过程名2 过程体2 return…procedure 过程名n 过程体n return
打开过程文件:set procedure to[ 文件名 ],关闭过程close procedure 调用过程do 过程名 [with 实参表 ]
定义全局变量:public 内存变量表
隐藏指定内存变量:1、private 内存变量表 2、private all[like 通配符变量名 ]|except 通配符变量名 ]
自定义函数:function 函数名 [parameters 形参表 ] 函数体 return 表达式 调用函数:函数名([ 实参表 ])
定义窗口:define window 窗口名1 from 左上角行号,列号 to 右下角行号,列号 [double|panel|system| border string |shadow][in window 窗口名2 ][title 标题 ][font 字体 [, 字号 ][close][float][grow][zoom][minimize]
边框样式double双线、panel粗线、system模拟命令窗口、默认单线。border string字符串边框,shadow阴影
in window定义在指定的父窗口内[close关闭][float移动][grow改变大小][zoom最大化][minimize最小化]
激活窗口:activate window 窗口名1 | all in window 窗口名2 休眠窗口:deactivate window 窗口名 [all]
释放窗口:release window 窗口名表 显示、隐去窗口show/hide window 窗口名表 | all
1、定义水平菜单:define menu 菜单名 [in window 窗口名 ][key 热键 ]
2、定义菜单选项:define pad 选项名 of 菜单名 prompt 提示 [at 行,列 ][key 热键 ]
3、设置菜单命令:on selection pad 选项名 of 菜单名 命令 4、激活菜单:activate menu 菜单名
5、定义弹出菜单:define popup 菜单名 [from 左上角行,列 ]
6、定义菜单选项:define bar 选项号 of 菜单名 prompt 提示 [key 热键 ]
7、设置菜单命令:on selection bar 选项号 of 菜单名 命令 8、激活菜单:activate popup 菜单名
9、下拉菜单中定义PAD选中后执行的弹出菜单:on pad 选项名 of 水平菜单名 activate popup 弹出菜单名
10、二级弹出菜单:on selection bar 选项号 of 菜单名 activate popup 二级菜单名
下拉菜单设计命令:1,2,9(3),5,6,7(10),4(弹出菜单已经在水平菜单中激活)
建立create menu|screen|report|project 文件名 (菜单文件|屏幕文件|报表文件|项目文件)
修改modify menu|screen|report|project 文件名 (菜单文件|屏幕文件|报表文件|项目文件)
运行do menu|screen|report|project 文件名 (菜单文件|屏幕文件|报表文件|项目文件)
对象可以用show get 变量名 [enable|disable]激活或关闭 show gets 变量表 enable
设置参数值set 参数名 to 参数值 设置状态值:set 参数名 on|off
set print on(off)打印机逻辑开关 set deleted off(on)off时被逻辑删除的记录仍参与*作
set exact on(off)find查询是否精确匹配 set development on(off) 是否自动重新编译、替代目标文件
set talk on(off)命令执行是否给出回应,set console on(off)非格式化输入数据是否回显
set device to screen(print|file 文件名 )设置输出设备 set udfparms to [value|reference]设置传递方式
set default to 目录 设置默认目录 set sysmenu on(off)设置是否显示系统菜单
SQL语言
建库文件create table|dbf 库文件名 ( 字段名1 类型 [( 长度 [, 小数位 ])][, 字段名2 …])|from array 数组
建临时库文件create cursor 文件名 ( 字段名1 类型 [( 长度 [, 小数位 ])][, 字段名2 …])|from array 数组
数据插入insert into 库文件名 [( 字段名1 [, 字段名2 …])]value( 表达式1 [, 表达式2 …])
insert into 库文件名 from array 数组 |from memory 数据删除 delete from 库文件名 where 条件
数据修改update 库文件名 set 字段名1 = 表达式1 [, 字段名2 = 表达式2 …][where 条件 ]
数据查询select[all | distinct][ 别名 .] 检索项 [,[ 别名 .] 检索项 …]from 库文件名 [ 别名 ][, 库文件名 ]
[ 别名 …][into 目标 ]|[to file 文件名 [additive]|to printer|to screen][where 连接条件 [and 连接条件 ]
[and|or 过滤条件 [ and|or 过滤条件 …]]][group by 分组列 [, 分组列 …]][having 过滤条件 ]
[union[all] select ][order by 排序项 [asc|desc][, 排序项 [asc|desc]…]]
distince:无重复的结果记录。检索项:主要是字段名,选中的字段可以和SQL函数一起使用
group by:将查询结果按某一列(或多列)的值进行分组。having:只与group by配合使用,用于说明分组条件
union[all] select :将两个查询结果合并在一起输出,无ALL重复记录被自动取消,有all表示结果全部合并。