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准备存储库的更多相关文章

  1. 无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支

    无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支.发布此分支将导致远程存储库中的分支发生非快进更新. 第一次用oschina的git设置完远程仓库后提交出现 ...

  2. Maven中央存储库

    当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载.首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默 ...

  3. 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库

     发布于 2014-02-10 作者 陈 忠岳 持续集成 (CI) 的历史源远流长, 其宗旨在于软件团队在敏捷环境中不断将他们的工作整合为持续构建.管理 CI 进程的工具已存在一段时间.过去几年中 ...

  4. 本地git部署web连接azure的git存储库

    ​​​本地git部署web 创建本地存储仓库 输入以下命令创建git本地仓库(会在当前目录下生产一个.git的目录) git init 然后提交内容 在git仓库所在的目录下存放好需要的网页文件 将文 ...

  5. 94、存储库之MongoDB、mysql

    本篇导航: 简介 MongoDB基础知识 安装 基本数据类型 CRUD操作 其它 存储库之mysql   一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是 ...

  6. 存储库之MongoDB、mysql

    本篇导航: 简介 MongoDB基础知识 安装 基本数据类型 CRUD操作 其它 存储库之mysql   一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是 ...

  7. g4e基础篇#4 了解Git存储库(Repo)

    章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git 分布式版本控制系统的优势 Git 安装和设置 了解Git存储库(Repo) 起步 1 – 创建分支和保存代码 起步 2 – 了解Git ...

  8. GitHub存储库泄露了API令牌和加密密钥

    导读 北卡罗莱纳州立大学(NCSU)学者的一项研究表明,一些GitHub存储库泄漏API令牌和密码密钥.研究人员分析了分布在数百万存储库中的10亿多个GitHub文件.研究人员使用GitHub搜索AP ...

  9. 每秒高达1.6亿次操作的并发键值存储库 FASTER 诞生

    FASTER 在过去十年中,云中的数据密集型应用程序和服务有了巨大的增长.数据在各种边设施(例如,设备,浏览器和服务器)上创建,并由云应用程序处理用来获得数据价值或做出决策.应用程序和服务可以处理收集 ...

随机推荐

  1. C/C++ 手工实现IAT导入表注入劫持

    DLL注入有多种方式,今天介绍的这一种注入方式是通过修改导入表,增加一项导入DLL以及导入函数,我们知道当程序在被运行起来之前,其导入表中的导入DLL与导入函数会被递归读取加载到目标空间中,我们向导入 ...

  2. 修改Android手机内核,绕过反调试

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/57086486 0x1.手机设备环境 Model number: Nexus 5 O ...

  3. POJ3228二分最大流

    题意:       有n个点,每个点有两个权值,金子数量还有仓库容量,金子可以存在自己的仓库里或者是别的仓库里,仓库和仓库之间有距离,问所有金子都必须存到库里最大距离的最小是多少? 思路:       ...

  4. 40 图 |我用 Mac M1 玩转 Spring Cloud

    我的开源 Spring Cloud 项目 PassJava 一直可以在 Windows 上正常运行,最近不是换 Mac M1 了么,想把这个项目在 M1 上跑起来,毕竟我的那台 Windows 用起来 ...

  5. 基于react hooks,antd4 配置生成表单并自动排列

    react后台项目,大多都是表单处理,比如下列4种常见1*n布局 (如果手工编码,大量的Row,Col, Form.Item的嵌套,排列,如果加上联动处理,代码将十分臃肿,不易维护) 一行一列 一行两 ...

  6. Day008 下标越界及小结

    数组的四个基本特点 其长度是确定的.数组一旦被创建,它的大小就是不可以改变的. 其元素必须是相同类型,不允许出现混合类型. 数组中的元素可以是任何数据类型,包括基本类型和引用类型. 数组变量属于引用类 ...

  7. 注解配置定时器Scheduling

    注解配置定时器配置 package com.demo; import org.springframework.context.annotation.Configuration; import org. ...

  8. CCNA 第一章 网络互联

    1: 网络互联基础 互联网络定义:使用路由器将多个网络连接起来,并配置IP或者IPV6协议的逻辑网络编址方案,便组成了互联网络. 导致LAN(局域网)拥塞的常见原因: (1):广播域或者冲突域中的主机 ...

  9. 解读vue-server-renderer源码并在react中的实现

    前言 ​ 在博客开发的过程中,有这样一个需求想解决,就是在SSR开发环境中,服务端的代码是是直接通过webpack打包成文件(因为里面包含同构的代码,就是服务端与客户端共享前端的组件代码),写到磁盘里 ...

  10. 删除rpc01

    vim /opt/ltp/runtest/stress.part3 修改/opt/ltp/runtest/stress.part3 删除rpc01: 142 systemctl status gdm ...