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 在过去十年中,云中的数据密集型应用程序和服务有了巨大的增长.数据在各种边设施(例如,设备,浏览器和服务器)上创建,并由云应用程序处理用来获得数据价值或做出决策.应用程序和服务可以处理收集 ...
随机推荐
- thinkPHP5中的与原本的字母方法用什么东西替代了?
过去的单字母函数已完全被替换掉,如下:S=>cache,C=>config,M/D=>model,U=>url,I=>input,E=>exception,L=&g ...
- UVA11248 网络扩容(枚举割边扩充)
题意: 给你一个有向图,问你从1到n的最大流是多少?如果流量大于等于C那么直接输出一个串,否则输出只扩充一条边的流量就可以达到1->n大于等于C的所有边,如果扩充不了就输出另一个串.S ...
- hdu4973 线段树(题目不错,用了点,段,更新查找还有DFS)
题意: 给你一个初始序列,初始序列长度n,分别为1 2 3 4 5 ....n,有两种操作 (1)D l r 把l_r之间的数据都复制一遍 1 2 3 4 5 6 D 2 4 = 1 2 ...
- Web漏洞小结
本文是对Web中最常见漏洞的一个小结: 注入类漏洞: SQL注入:SQL注入漏洞详解 XML注入:XXE(XML外部实体注入) 代码注入:代码注入漏洞 CRLF注入:CRLF注入 注入类漏洞是应用违背 ...
- Docker阿里云镜像存储服务
阿里云镜像服务地址 https://cr.console.aliyun.com/cn-beijing/instances/repositories 免费免费免费 登陆之后可以免费创建,仓库.地址大 ...
- <input type="file" id="fileID">文本框里的值清空方法
一般情况下,不允许通过脚本来对文件上传框赋值. 下面是一个变通的方法.就是创建一个新的input type="file" 把原来的替换掉. <!DOCTYPE html PU ...
- C++ 三消游戏基本实现
最近在研究三消算法,我想试试在完全不借助网络资源的情况下搞定这个东西,所以有些地方可能不是最优的. 代码留此备忘. 1. 3x_desk_event.h 1 #pragma once 2 3 #ifn ...
- properties和yml进行对比
properties和yml进行对比 概念 springboot支持两种格式的配置文件,一种是yml,一种是properties,默认的文件名是application.properties或者appl ...
- Pytest自动化测试-简易入门教程(01)
我们今天主讲的内容,就是测试框架Pytest,讲到这个测试框架对于没有做过Web自动化的伙伴来说,会觉得这个东西是陌生的,那么到底什么是框架呢?什么又是自动化呢?自动化为什么又要用框架呢? 难道我学自 ...
- 2021.02.21cf补题
B. National Project 题意:总长度为n的公路进行维修,天气是有规律性的,连续g天的好天气,连续b天的坏天气,必须在好天气进行维护,问至少维护n的一半,那么至少需要多少天 思路:必须是 ...