产生优化的计算机数据字段转换例程的制作方法

文档序号:6481720阅读:197来源:国知局
专利名称:产生优化的计算机数据字段转换例程的制作方法
技术领域
本发明针对计算机数据。更具体地,本发明针对一种类型的计算机数据字段向另一种类型的转换。
背景技术
在许多情况下,在计算机进行信息处理过程中,计算机数据必须从一种数据字段类型转换成另一种。例如,当数据从一个程序被传送到另一个程序时,数据通常在此过程中要经历几次转换,比如从文本数字转换为一个二进制数。
用于转换数据的典型技术包括使用一个类属数据转换例程。当必须转换数据的整个记录时,转换例程必须确定记录中的每个数据字段的特性或属性是什么。这可能要求转换例程为每个记录的每个字段执行相同的决策树,尽管每个字段具有在逐行的基础上不变化的已知特性。因此,许多计算机周期被浪费在就每个数据字段再三问比如“本字段类型是字符、整数、等等?”问题上。
基于上述内容,需要有一种提供数据字段的有效转换的系统。

发明内容
本发明的一个实施例是一个用于把数据从输入字段类型转换为输出字段类型的系统。该系统从一个应用程序中接收多个输入属性和输出属性,动态地为每组输入属性和输出属性产生多个数据字段转换例程,并把多个数据字段转换例程存储在应用程序可以访问的存储器中。
附图简介

图1是表示根据本发明的一个实施例的一个优化的转换发生器系统的功能性的总揽方框图。
图2是由根据本发明的一个实施例的系统执行用来产生优化的转换例程的步骤的流程图。
图3是当使用例程把输入字段转换为输出字段时由应用程序执行的步骤的流程图。
图4是当应用程序调用时,由转换发生器系统执行的代码产生步骤的流程图。
图5a和5b表示在本发明的一个实施例中使用的动态代码构建的一般例子。
图6a-6h表示执行CHARACTER到CHARACTER转换的一个动态代码产生例程的特例。
详细说明本发明的一个实施例是为一个应用程序所要求的每种转换类型产生优化的数据字段向数据字段的转换例程的系统。图1是表示根据本发明的一个实施例的一个优化的转换发生器系统20的功能性的总揽方框图。系统20可以在软件中实施,并可以在一个包括中央处理单元和存储器的通用计算机上执行。在一个实施例中,用IBM/360机器指令实施系统20。
一个应用程序10需要执行一种或者更多种字段转换类型。对于每一种转换类型,应用程序10为系统20提供输入(或者“源”)和输出(或者“目的”)字段属性。对于每组输入和输出字段属性,系统20动态地产生一个执行转换的优化的转换例程30。优化的例程30被置于应用程序10可用的存储器中。
一个实施例中的例程30被作为独立例程产生,该独立例程能够被连续地再用,并在当需要一个转换时,由应用程序10使用,例如,一个应用程序接口(“API”),来调用。在另一个实施例中,例程30被作为代码程序块(code chunk)来产生,这些代码程序块被插入应用程序10中与其内联,当需要一个转换时可以被直接访问。
本发明的一个优点是通过构建专门适合于输入和输出字段属性的优化的转换例程,例程的每次执行省却许多通常需要的在每次执行转换时识别字段属性的指令。
图2是根据本发明的一个实施例由系统20执行用来产生优化的转换例程30的步骤的流程图。应用程序10在步骤100确定了输入字段和输出字段具有什么属性之后,由系统20执行步骤。
在步骤102,系统20设置产生的转换例程30的缺省过程选项。这些选项可能包括产生的转换例程30是否是可调用函数(即,能由应用程序10调用),或者是否可以内联复制到应用程序10中。步骤102构建一个模板接口块104,其为应用程序10和转换发生器系统20之间的一个接口。步骤102还产生一个获得需要的存储空间和进行错误检查的启动调用106。
在步骤108,启动一个循环,直到穷举了所有必须被转换的字段,循环才结束。
在循环过程中,在步骤110,从应用程序10接收每组输入和输出属性。通过一个API来接收属性,而且步骤110还基于这些属性,构建一个公用字段转换接口块116。
在步骤112,使用公用接口块116,调用系统20的代码发生器。步骤112产生代码118。
在步骤114,保存一个指向产生的字段转换例程30的函数指针。
图3是当使用例程30把输入字段转换为输出字段时由应用程序10执行的步骤的流程图。
在步骤122中,应用程序正在进行处理。在步骤124,应用程序获得待转换的源或者输入数据。典型地,步骤124涉及读取一个或者多个记录。
在步骤126,为每个读取的记录启动一个循环。在步骤128,在一个实施例中调用用于转换的适当转换例程30。
当所有数据字段和记录被转换时,在步骤132,要求代码发生器系统20终止。其结果是在步骤134释放了存储空间。
在步骤136,应用程序10继续处理。最后,在步骤138,应用程序10结束。
图4是当应用程序10调用时,由转换发生器系统20执行以产生代码的代码产生步骤的流程图。
在步骤200,系统20通过,例如,建立需要的存储空间,检查无效选项和指定应如何产生代码来进行初始化。
在步骤202,系统20验证特定的字段转换选项,例如检验输入和输出长度是正确的。步骤202还确定当代码产生时代码有多大。如果产生的代码将被内联存储,应用程序10可以使用上述信息。
在步骤204,系统20使用字段转换接口块116来构建转换例程。
在步骤206,在步骤200获得的存储空间被释放。
步骤202和204经历同样的内部过程。因此,在步骤208,确定了输入字段类型。输入字段类型的例子包括字符输入210或者专用时间格式输入212。但是,本发明支持任何输入字段类型。
类似地,在步骤214,确定输出字段类型。输出字段类型的例子也包括字符输入213或者专用时间格式输入215,但是本发明支持任何输出字段类型。
在步骤216,如果执行步骤202,确定产生的代码的大小。在步骤218,如果执行步骤204,产生字段转换例程30。
如所公开的,根据本发明的一个实施例的系统20为每组输入和输出字段属性动态地产生优化的转换例程30。接着,由应用程序10利用例程30处理转换。输入和输出字段被系统20归类为原型数据类型,每种数据类型都有可定义的属性和转换行为。例如·字符数据类型将是一个具有最大长度属性和CCSID(或字符设置代码页)属性的定长字段。
·日期数据类型将是一个具有最大长度属性和确定日期中使用的分隔符的位置和类型的格式属性(ISO,EUR,等)的定长字段。
在优化的转换发生器系统20的一个实施例中包括的一些以前说明的或者附加的特征包括·可选地获得和释放用于API控制块和/或产生的代码的存储空间。
·API控制块可以由API管理函数来链接和模板化。
·可以通过使用一个宏接口来构建API控制块。
·转换例程可以利用寄存器来直接寻址输入和输出字段的位置。寄存器可以由应用程序10通过API参数来选择。
·基于API参数,在转换之后源字段地址寄存器可以可选地被递增到输入字段的末尾。
·基于API参数,在转换之后目的字段地址寄存器可以可选地被递增到格式化字段的末尾。
·基于API参数,一个附加寄存器可以被递增所转换字段的长度。
·基于API参数,可以产生用于转换例程的标准连接。
·基于API参数,可以指定转换错误退出(Conversion Errorexits)来处理枚举的转换错误条件。
·基于API参数,可以产生字符代码集翻译转换代码(即,ASCII字符字段可以被翻译成EBCDIC字符字段)。
·可以产生转换例程来利用由正在为之产生代码的操作系统级支持的最新指令。
在一个实施例中,系统20基于API控制块中的各种设置,通过在调用应用程序10可以访问的存储空间中构建代码程序块,动态地产生代码。如结合流程图中的讨论,产生代码涉及以下步骤1.为代码获得存储空间。
2.识别所需要的代码模板。
3.移动代码模板。
4.修改代码模板。
5.向调用应用程序返回可执行代码。
进一步,在一个实施例中,基于API规范,系统20可以为动态产生的代码可选地产生程序调试方法。该方法可以包括一个可选动态分配的输出文件,对于每个字段转换,其包括API选项和通用处理选项的报告,API选项被用于每个动态产生的例程,可以用该例程来确保字段属性的正确性;和动态产生的例程的一个分解的列表,分解的列表由系统20内的一个内部分解器提供,列表可以被用来识别转换代码的不精确性和进一步优化的区域,并有助于解决产生的代码故障。
图5a和5b表示在本发明的一个实施例中使用的动态代码构建的一般例子。
图6a-6h表示执行CHARACTER到CHARACTER转换的一个动态代码产生例程的特例。
在此专门解释和/或说明了本发明的几个实施例。但是,应当理解本发明的修改和变动为上述教导所函盖,并且置于所附权利要求的权限之内,而不背离本发明的精神和旨在范围。
权利要求
1.一种由一个应用程序把多个输入字段类型转换为多个输出字段类型的方法,所述方法包括(a)接收一个第一输入字段类型的一个第一属性和一个第一输出字段类型的一个第二属性;(b)基于所述第一属性和所述第二属性,产生一个第一优化的转换例程;和(c)执行来自所述应用程序的所述第一优化的转换例程以把所述第一输入字段类型转换为所述第一输出字段类型。
2.根据权利要求1的方法,其中步骤(c)包括调用来自所述应用程序的所述第一优化的转换例程。
3.根据权利要求1的方法,其中步骤(c)包括同所述应用程序内联地存储所述第一优化的转换程序。
4.根据权利要求1的方法,其中在所述应用程序正在执行时动态地执行步骤(b)。
5.根据权利要求1的方法,进一步包括(d)接收一个第二输入字段类型的一个第三属性和一个第二输出字段类型的一个第四属性;(e)基于所述第三属性和所述第四属性,产生一个第二优化的转换例程;和(f)执行来自所述应用程序的所述第二优化的转换例程来把所述第二输入字段类型转换为所述第二输出字段类型。
6.根据权利要求1的方法,其中所述第一和第二属性是字符类型。
7.根据权利要求1的方法,进一步包括为所述第一优化的转换例程产生程序调试方法。
8.一种把数据从输入字段类型转换成输出字段类型的方法,所述方法包括(a)接收来自一个应用程序的多个输入属性和输出属性;(b)为每组输入属性和输出属性动态地产生多个数据字段转换例程。(c)把所述多个数据字段转换例程存储在所述应用程序可以访问的存储器中。
9.根据权利要求8的方法,其中,所述数据字段转换例程可以由所述应用程序调用。
10.根据权利要求8的方法,其中所述数据字段转换例程与所述应用程序内联地存储。
11.根据权利要求8的方法,其中在所述应用程序正在执行时,动态地执行步骤(b)。
12.根据权利要求8的方法,其中所述输入和输出属性是字符类型。
13.根据权利要求8的方法,其中所述输入和输出属性是日期类型。
14.根据权利要求8的方法,进一步包括为所述多个数据字段转换例程产生程序调试方法。
15.一种用于动态地产生计算机数据字段转换例程的系统,所述系统包括一处理器;和一耦合到所述处理器的存储器设备;其中所述系统适于接收来自一个应用程序的多个输入属性和输出属性;和其中所述存储器设备存储指令,当由所述处理器执行这些指令时,引起所述处理器执行以下操作为每组输入属性和输出属性动态地产生多个数据字段转换例程;和在可以被所述应用程序访问的一个第二存储器设备中存储所述多个数据字段转换例程。
16.根据权利要求15的系统,其中所述数据字段转换例程可以由所述应用程序调用。
17.根据权利要求15的系统,其中所述数据字段转换例程与所述应用程序内联地存储。
18.根据权利要求15的系统,其中在所述应用程序正在执行时产生所述多个数据字段转换例程。
19.根据权利要求15的系统,其中所述输入属性是字符类型,所述输出属性是日期类型。
20.根据权利要求15的系统,其中所述处理器为所述多个数据字段转换例程进一步产生程序调试方法。
全文摘要
一个系统(20)把数据从输入字段类型转换为输出字段类型。系统(20)接收来自一个应用程序(10)的多个输入属性和输出属性,为每组输入属性和输出属性动态地产生多个数据字段转换例程(30),并把多个数据字段转换例程(30)存储在可以被应用程序(10)访问的存储器中。
文档编号G06F17/24GK1359486SQ00805202
公开日2002年7月17日 申请日期2000年3月17日 优先权日1999年3月19日
发明者凯文M·平塔, 唐纳德L·博伦 申请人:联合想象计算机公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1