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. github组织存储库使用_为什么我不使用您的GitHub存储库

    github组织存储库使用 by Sam Westreich, PhD 由Sam Westreich博士 为什么我不使用您的GitHub存储库 (Why I'm not using your GitH ...

  2. 注意!今日起 GitHub 新建存储库的默认分支就不叫“master”了!

    整理 | 郑丽媛 头图 | CSDN下载自东方IC GitHub 宣布,自2020年10月1日起,在 GitHub 平台上创建的所有源代码存储库都将默认命名为 main ,而非原本的 master . ...

  3. 如何在GitHub上重命名存储库?

    本文翻译自:How do I rename a repository on GitHub? I wanted to rename one of my repositories on GitHub, b ...

  4. 存储库访问被拒绝。通过部署密钥进行访问是只读的

    本文翻译自:Repository access denied. access via a deployment key is read-only After successfully cloning ...

  5. 如何从Subversion存储库中git-svn克隆最后n个修订版?

    本文翻译自:How to git-svn clone the last n revisions from a Subversion repository? Problem 问题 How do you ...

  6. 如何在github存储库中添加屏幕截图到README?

    本文翻译自:How to add screenshot to READMEs in github repository? Is it possible to place a screenshot in ...

  7. 将现有Git存储库推送到SVN

    我一直在用Git完成所有工作并推送到GitHub. 我对软件和网站都非常满意,我不想在此时改变我的工作方式. 我的博士生顾问要求所有学生将他们的工作保存在大学托管的SVN存储库中. 我已经找到大量关于 ...

  8. 如何将github存储库回滚到特定提交?

    我的github现在有100个提交. 我需要回滚存储库以提交80,并删除所有后续存储库. 为什么? 该回购应该用于其他用户的合并. 由于过度的编辑,大量合并作为我提交的内容. 那是由于我的远程分支贴错 ...

  9. 尝试远程添加Git存储库时收到“致命错误:不是git存储库”

    我通过遵循本教程向自己介绍Git: 让jekyll在Nearlyfreespeech.net上运行 一切正常,直到将回购添加到本地计算机的部分为止: git remote add nfsn ssh:/ ...

最新文章

  1. 计算机视觉多目标检测整合算法
  2. 基于 Token 的多平台身份认证架构设计
  3. python爬百度翻译-Python爬虫实现百度翻译功能过程详解
  4. 使用lld自动发现监控多实例redis
  5. 自动化Cobbler安装
  6. 武汉计算机应用中职学校,武汉市中职学校计算机应用基础课程抽考.Doc
  7. gohu恒温花洒使用教程_使用家庭助理构建更好的恒温器
  8. Selenium的定位元素
  9. python语言单词接龙_[蓝桥杯][算法训练VIP]单词接龙 (C语言代码)
  10. GridView 分页导航
  11. ABAP-内表数据下载到CSV格式(原创转载请注明)
  12. 学习git reset 、 git checkout、git revert
  13. 如何检测浏览器所支持的最小字体大小
  14. CorelDRAW入门教程-用CDR制作漂亮小雨伞
  15. 二极管计算机原理,二极管的原理
  16. element-ui el-upload框去除‘按 delete 键可删除‘提示
  17. win10修改用户名_win10最详细优化设置|win10专业版笔记本优化教程
  18. 1334177-81-9,S-acetyl-PEG8-alcohol乙酰硫基可以脱保护生成巯基
  19. 在注册表中删除程序的方法
  20. 「IOI2018」Highway 高速公路收费

热门文章

  1. 2022-2028年中国塑料人造革行业市场研究及前瞻分析报告
  2. Linux shell 学习笔记(4)— linux 环境变量(全局变量、局部变量及变量持久化)
  3. seq2seq(1)- EncoderDecoder架构
  4. MLIR中间表示与编译
  5. 用TVM在硬件平台上部署深度学习工作负载的端到端 IR 堆栈
  6. deeplearning模型库
  7. C++ 向量(vector) 的使用
  8. python 使用import导入不同文件下的文件
  9. Python 运算符之成员运算符 in 与 not in
  10. python 删除list 里面的一个空集合