CodeGen准备存储库
CodeGen准备存储库
CodeGen几乎总是与提供用于生成源文件的元数据的存储库结构一起使用,并且许多令牌需要使用存储库结构。
基本要求是有一个结构定义,并且该结构定义包含一个或多个字段定义。有些标记还要求定义键,有些则需要具有结构赋值的文件定义。
如果还没有存储库,则可以通过将现有的记录布局文件读入存储库结构来加载所需的大部分信息。
存储库结构限制
为了成功地与CodeGen一起使用,存储库结构必须满足以下要求。
•CodeGen当前不支持枚举、二进制和结构字段。
•允许覆盖字段,但通常会被CodeGen忽略。
•所有密钥必须正确定义,以便与适当的ISAM文件完全匹配。
•只允许一个标签,且该标签必须是字段均衡值类型。
•使用某些令牌需要将正在处理的结构分配给文件定义,而有些则需要定义密钥。
•必须按照正确的顺序定义键。CodeGen根据密钥在存储库结构中的定义顺序来确定密钥编号。以正确的顺序定义访问键,并在所有访问键定义之后定义外键。
•如果打算为Synergy以外的语言生成源代码,则应避免给出可能是相关语言中保留字的字段名称。
•如果希望阻止CodeGen处理结构,则可以将文本@NOCODEGEN添加到structures用户文本字段或长描述中。
•要指定结构中的字段是结构“显示字段”,可以将文本@CODEGEN_display_field添加到字段的用户文本字符串或长描述中。有关详细信息,请参阅<DISPLAY_FIELD>标记。
数组字段
CodeGen支持数组字段,但这些数组被“展平”为多个非数组字段。换言之,遇到的每个数组字段将被多个与数组字段具有相同数据类型和大小的字段替换。
当一个数组扩展到多个单独的字段时,每个字段的名称都会被修改以包含数组元素定义。例如,字段MYFIELD,A10将展开为两个单独的字段,分别名为MYFIELD和MYFIELD。
分组字段
CodeGen支持组,包括组数组。当由CodeGen处理时,组被“扁平化”。换句话说,组中的字段将成为主结构中的字段,并且组字段将被删除。
默认情况下,组成员字段名的前缀是父组字段的名称,后跟一个句点,但可以使用–g f命令行选项覆盖此行为。例如,如果名为ADDRESS的组包含名为STREET的字段,则CodeGen使用的字段的名称将为:
ADDRESS.STREET
但如果要使用–g f命令行选项,则字段的名称将为:
STREET
显然,在这种情况下,需要确保名称与同一结构中的任何其他标识符不冲突。
如果存储库组定义包含“成员前缀”“member prefix”,则此前缀将添加到组中每个字段的名称中,但可以使用–g r命令行选项覆盖此行为。
例如,如果一个名为ADDRESS的组包含一个名为STREET的字段,并且group字段定义了成员前缀HOME_,则CodeGen使用的字段的名称将为:
ADDRESS.HOME_STREET
With the –g f command line option the name would be:
HOME_STREET
With the –g r command line option the name would be:
ADDRESS.STREET
And with the –g f r command line options the name would be:
STREET
如果一个组成员字段被声明为数组,那么它将被视为前面在数组字段下讨论过的。
加载Include文件
在将包含文件中的字段加载到存储库结构之前,通常最好先制作包含文件的副本,然后在将其加载到存储库结构之前在文件中执行一些简单的“清理”:
•存储库可以将包含文件中单个记录(或公共记录)中的字段加载到存储库结构中,因此,如果包含文件定义了多个记录,则首先确定要加载的记录。
•存储库将使用字段定义之后的任何注释作为字段的说明,因此请清理注释。如果字段注释包括位置信息之类的内容,那么可能需要删除它们。请注意,如果这些位置是用特定的可识别字符分隔的(例如,如果它们在括号内),则可以在将字段加载到存储库中时指定这些字符,因此在这种情况下,不需要手动编辑它们。
•存储库将加载在要加载的记录中定义的任何覆盖,但如果有要保留的覆盖图,这些覆盖被定义为单独的覆盖记录(使用record,X),那么可能需要考虑将这些覆盖字段移到实际的记录定义中。
•请记住,一般情况下CodeGen会忽略覆盖字段,因此请检查所有覆盖,并确保最希望在生成的代码中使用的字段是“真实”字段,而不太可能有用的字段是覆盖字段。例如,如果有日期字段,其中实际字段是单独的年、月和日,并且有完整的日期覆盖。在生成代码时,很可能希望访问完整的日期,而不是单个字段,因此切换字段和覆盖可能是最好的选择。
•如果有完整的覆盖层记录(一个记录后跟一个或多个记录,X's),那么可能需要将每个覆盖层加载到单独的存储库结构中。
清理完include文件后,就可以将该文件加载到新的存储库结构中。程序如下:
•启动存储库并选择“修改”>“结构”。
•单击“添加”按钮(或按“插入”键)添加新结构。
•提供结构的名称。通常最好使用原始记录名作为结构名。
•设置文件类型。大多数结构应设置为“DBL ISAM”。
•对结构进行有意义的描述,如“客户主记录”。
•如果要将结构与数据文件中具有多个记录布局的文件相关联,请设置标记以告知存储库和其他工具如何检测文件中的此特定记录布局。如果不是这样,请选择“无”。
•单击“确定”按钮创建新结构。
•单击属性按钮(或按F3键)
•从菜单中,选择属性>字段。
•从菜单中,选择字段功能>加载字段(或按F9)。
•输入包含文件的名称(或使用文件浏览器查找)。
•如果包含文件有多个记录,请输入要读取的记录编号。
•如果要从字段说明中删除信息(例如括号之间的位置),请输入分隔要删除的信息的字符。
•单击“确定”按钮将字段加载到结构中。
•按F4键退出字段列表。
•再次按F4键退出结构,并保存更改。
•继续按F4退出存储库程序。
CodeGen准备存储库的更多相关文章
- 无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支
无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支.发布此分支将导致远程存储库中的分支发生非快进更新. 第一次用oschina的git设置完远程仓库后提交出现 ...
- Maven中央存储库
当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载.首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默 ...
- 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库
发布于 2014-02-10 作者 陈 忠岳 持续集成 (CI) 的历史源远流长, 其宗旨在于软件团队在敏捷环境中不断将他们的工作整合为持续构建.管理 CI 进程的工具已存在一段时间.过去几年中 ...
- 本地git部署web连接azure的git存储库
本地git部署web 创建本地存储仓库 输入以下命令创建git本地仓库(会在当前目录下生产一个.git的目录) git init 然后提交内容 在git仓库所在的目录下存放好需要的网页文件 将文 ...
- 94、存储库之MongoDB、mysql
本篇导航: 简介 MongoDB基础知识 安装 基本数据类型 CRUD操作 其它 存储库之mysql 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是 ...
- 存储库之MongoDB、mysql
本篇导航: 简介 MongoDB基础知识 安装 基本数据类型 CRUD操作 其它 存储库之mysql 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是 ...
- g4e基础篇#4 了解Git存储库(Repo)
章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git 分布式版本控制系统的优势 Git 安装和设置 了解Git存储库(Repo) 起步 1 – 创建分支和保存代码 起步 2 – 了解Git ...
- GitHub存储库泄露了API令牌和加密密钥
导读 北卡罗莱纳州立大学(NCSU)学者的一项研究表明,一些GitHub存储库泄漏API令牌和密码密钥.研究人员分析了分布在数百万存储库中的10亿多个GitHub文件.研究人员使用GitHub搜索AP ...
- 每秒高达1.6亿次操作的并发键值存储库 FASTER 诞生
FASTER 在过去十年中,云中的数据密集型应用程序和服务有了巨大的增长.数据在各种边设施(例如,设备,浏览器和服务器)上创建,并由云应用程序处理用来获得数据价值或做出决策.应用程序和服务可以处理收集 ...
随机推荐
- 看了这篇还不会Linux性能分析和优化,你来打我
前言 一般互联网的项目都是部署在linux服务器上的,如果linux服务器出了问题,那么咱们平时学习的高并发,稳定性之类的是没有任何意义的,所以对linux性能的把握就显得非常重要,当然很多同学可能觉 ...
- 浅谈程序设计和C语言
学前必备知识 程序:一组计算机能识别和执行的指令. 计算机语言:计算机工作基于二进制,计算机只能识别和接受由0和1组成的指令. 计算机能直接识别和接受的二进制代码称为机器指令.机器指令的集合就是该计算 ...
- hdu1146
题意: 题意最蛋疼,其实是水题,这个题意整的我wa了一个多小时,我就改改题意吧..有一条河,刚开始的时候在左岸有一条船,这条船最多能运n个货物,一趟的时间是t,有m个货物,每个货物有自己到 ...
- Python中os模块、csv模块和xlrd模块的使用
目录 os模块的使用 open("test.txt","mode") 读取文件中的内容 f.read() f.readline(size) f.readline ...
- 使用Layui、Axios、Springboot(Java) 实现EasyExcel的导入导出(浏览器下载)
实现EasyExcel的导入导出(浏览器下载) 实现三个按钮的功能,但是却花费了一天的时间包括总结. 使用到的技术:springboot layui axios EasyExcel mybatis-p ...
- Sublime text3 的破解
下载sublimeText3的安装包并安装(已经安装的可以忽略) 在hosts文件中添加:127.0.0.1 license.sublimehq.com(hosts文件地址:C:\Windows\Sy ...
- Insert Pictures In Hexo Blog
After build my blog following the online course step by step , I began to try to write my own blog️ ...
- VS里的 代码片段(Code snippet)很有用,制作也很简单
工欲善其事必先利其器,而 Visual Studio 就是我们的开发利器. 上一篇文章,介绍了一个很棒的快捷键,如果你还没用过这个快捷键,看完之后应该会豁然开朗.如果你已经熟练的应用它,也会温故而知新 ...
- OO_Unit4_UML模型化设计
CSDN博客传送门 @ 目录 一.架构设计 (一)第一次作业 作业需求分析 建立类图 bug修复 (二)第二次作业 作业需求分析 建立类图 checkForUml002实现方式 checkForUml ...
- 4.启动虚拟机 设置CentOS7
启动虚拟机 CentOS设置 1.点击箭头方向即可启动我们的VMware 2.设置语言 在第一步设置完成后,我们一直等待,即可来到语言设置界面 此处我们设置[中文] 3.设置安装信息 将下面带有[感叹 ...