首页> 中国专利> 用于改变计算机程序的输出而不改变源代码的系统和方法

用于改变计算机程序的输出而不改变源代码的系统和方法

摘要

用于改变一计算机程序的输出而不改变源代码的系统和方法。一计算机程序读取两种文件,一输入数据文件和一方法文本文件。该数据输入文件包括将提供给输出装置的名称/数值对,该方法文本文件包括格式化说明。该数据输入文件的名称/数值对不必根据所要求的结构来排列。在程序执行过程中,方法文本文件的格式化说明被转换成一系列可执行对象,且来自数据输入文件的名称/数值对以根据这些格式化说明的一种格式来提供。输入文本文件和方法文本文件的协调改变将导致输出格式的改变。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-01-27

    未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20050601 终止日期:20141214 申请日:20001214

    专利权的终止

  • 2005-06-01

    授权

    授权

  • 2003-08-27

    实质审查的生效

    实质审查的生效

  • 2003-06-11

    公开

    公开

说明书

技术领域

本发明一般涉及计算机输出格式化系统,更准确地说涉及用于改变计算机程序输出的格式而不改变该计算机程序源代码的系统和方法。

技术背景

计算机系统的用户时常需要执行为当前执行过程的变种的新过程的程序。因此,需要对用户使用的计算机程序所执行的过程进行维护或改变。这些必要的改变常常包括如果要格式化则改变程序输出的方式。在过去,计算机程序的输出通常是由源代码本身决定的。因此,当要求从那些原始编写入该程序的格式中导出输出格式时,有必要雇用很熟练的计算机程序员来改变计算机程序本身的源代码。结果,当计算机程序的输出格式要求改变时,要经历长时间的耽误。

例如,考虑用于制作标签的一程序的情形。最初,在使用该程序的过程中,位置、字体、字号以及目标的方位是可接受的。然而,在该程序使用期间,有必要用某些方法来改变格式以满足新的或意想不到的需要。为满足该需要,熟练的计算机程序员不得不重新编写该计算机程序的源代码,这导致时间和金钱的支出。

因此,在本领域还需要降低时间和必要的编程技能水平来改变计算机程序的输出格式。

发明内容

本发明意在提供一种改变计算机程序输出格式而不对程序的源代码进行高成本和费时间改变的方法。

这一目的通过使用一单独的输入文本文件来提供具有多种易改变的格式化说明的程序来实现。当输出格式需要改变,而不改变该程序的源代码时,该文本文件的内容被改变。由于这是一输入文本文件而不是源代码,所以仅需具备文件的简单语法规则知识而不要求具备编写复杂的计算机程序源代码的能力。因此,通过改变计算机程序的输出格式而不需进行高成本和费时的代码级改变就能达到高效率。

在一优选实施例中,计算机程序读取两个文件,一输入数据文件和一方法文本文件(recipe text file)。数据输入文件包括提供给一输出装置的名称/数值对,方法文本文件包含格式化说明。数据输入文件的名称/数值对不需要按照要求的结构来排列。在程序执行过程中,方法文本文件的格式化说明被转换成一系列可执行对象,且来自数据输入文件的名称/数值对按照这些格式化说明以某种格式来提供。输入文本文件和方法文本文件的协调改变将导致输出格式的改变。

本发明的另一方面是提供一种用于输出格式化信息的方法。该方法提供包含名称/数值对的一输入数据文本文件;提供包含格式化说明的一方法文本文件;将该方法文本文件转换成一系列可执行的对象;接收一请求以提供输出;以及根据格式化说明执行可执行对象以提供名称/数值对。其次,该方法改变方法文本文件以包括改变的格式化说明;将该改变的方法文本文件转换成一系列可执行的对象;接收另一请求以提供该输出;并根据改变的格式化说明执行该可执行对象以提供名称/数值对。输入数据文本文件可能被改变以包括与方法文本文件的改变对应的改变的名称/数值对。

例如,再次考虑用于制作标签的程序的情形。同以前一样,在程序的最初使用过程中,位置、字体、字号以及对象的方向是可接受的,但在程序使用过程中,有必要用某些方法来改变格式以满足新的或意想不到的需要。然而,为满足这些需要,很熟练的计算机程序员将不必重新编写计算机程序的源代码。不改变该程序的源代码,而仅使用方法文本文件语法的知识就能对方法文本文件进行简单的增加或改变。由于方法文本文件的格式化说明由该程序转换成一系列可执行对象,因而不必改变源代码。因此,不要求具有用高级的技术上的计算机编程语言编程的能力。

附图说明

图1是用于实现本发明的典型实施例的一典型操作环境的功能框图;

图2是说明本发明一典型实施例总的操作流程图;

图3是对包含在输入数据文本文件中的名称/数值对的说明;以及

图4是对一方法文本文件的说明。

具体实施方式

本发明涉及用于改变一计算机程序的输出而不改变源代码的系统和方法。简言之,本发明向计算机提供包含输入数据的一输入数据文件以及包含格式化说明的一方法文本文件。一旦计算机读取这些文件,方法文件被转换成一系列可执行对象。在计算机接收到来自用户的一请求后,可执行对象被执行以根据包含在方法文本文件中的格式提供来自数据输入文件的数据。

在根据包含在方法文本文件中的格式提供输出后,方法文本文件被改变以反映在输出格式方面所要求的改变。一旦该改变完成后,系统将方法文本文件转换成可执行对象并且响应用户输入再次执行它们。该执行的结果是来自数据文本文件的数据用从先前执行中改变的格式输出。

本发明的典型实施例将参考附图在下面说明,附图中相同的数字表示相同的元件。从图1开始,图1示出了用于实现本发明的一典型实施例的典型操作环境。在该典型的操作环境中,本发明可能通过操作来方便计算机程序输出的改变而不改变源代码。然而,本领域熟练的技术人员应当理解,本发明可能在任何类型的计算机操作环境,如手持设备、多处理器系统、基于微处理器或可编程的用户电子设备、微型计算机、巨型计算机等等中实现。本发明也可能在任务是由远程处理设备来执行的分布式计算环境中实现。

本发明的典型实施例将在以下被称为FOSS应用程序的格式输出子系统应用程序36的总的上下文中描述。该FOSS应用程序36易于改变一计算机程序的输出,其与一输入数据文本文件38和一方法文本文件39相互作用,以便改变一计算机程序输出而不改变源代码。本领域普通技术人员将认识到本发明可能结合各种其他程序模块37来实现。通常,程序模块包括执行特定任务或实现特定的抽象数据类型的子程序、程序、元件、数据结构等等。此外,本领域普通技术人员将理解,本发明可能用除了所示出的以外的通过一通信网络链接的计算机系统结构来实现。在分布式计算环境中,程序模块既可能位于本地也可能位于远程存储设备中。

用于实现本发明的典型操作环境100包括一常规的个人计算机系统20,该系统包括一处理单元21、一系统存储器22以及将系统存储器22耦接到处理单元21的系统总线23。该系统存储器22包括只读存储器(ROM)24以及随机存取存储器(RAM)25。包含有助于在个人计算机系统20的各元件之间传送信息的基本子程序诸如启动过程的一基本输入/输出系统26(BIOS)被存储在ROM 24中。

个人计算机系统20进一步包括一硬盘驱动器27、一磁盘驱动器28,例如用来读取或写入的一可移动盘29,以及一光盘驱动器30,例如用于读取一CD-ROM盘31或读取或写入其他光介质。硬盘驱动器27、磁盘驱动器28以及光盘驱动器30分别通过一硬盘驱动器接口32、一磁盘驱动器接口以及一光盘驱动器接口34连接到系统总线23上。各驱动器和与它们相关的计算机可读介质为个人计算机系统20提供非易失性存储器。例如,输入数据文本文件38可能存储在个人电脑20的硬盘27的RAM 25中。尽管上述有关计算机可读介质的说明指硬盘、可移动磁盘以及CD-ROM盘,但本领域普通技术人员应当理解,可由一计算机系统读取的其他类型的介质如磁带、闪存卡、数字视频光盘、Bernoulli盒式磁带等等也可能用在该典型操作环境中。

多个程序模块可能存储在各驱动器和RAM 25中,包括一操作系统35、FOSS应用程序36、其他程序模块37、输入数据文本文件38、方法文本文件39、一系列可执行对象40以及修改后的一系列可执行对象41。特别是,便于计算机程序输出改变的FOSS应用程序36与输入数据文本文件38和方法文本文件39相互作用以便改变一计算机程序的输出而不改变源代码。FOSS应用程序36的典型实施例将参考图2在下面详细说明。

其他输入设备(未示出)可能包括一话筒、摇杆、游戏手柄、圆盘式卫星电视天线、扫描器等等。这些以及其他输入设备通常通过耦合到系统总线的一串行接口46被连接到处理单元21,但也可能通过其他接口,如一游戏端口或一通用串行总线(USB)来连接。一显示设备或其他类型的设备如一监视器也经由一接口,如一视频适配器48被连接到系统总线23上。一打印机45也可经由一接口,如并行接口44连接到系统总线23。除了显示设备47和打印机45以外,个人计算机系统通常包括其他外围输出设备(未示出),如扬声器。

个人计算机系统20可能使用与一个或多个远程计算机系统,如一远程计算机系统49的逻辑连接在一网络环境中操作。该远程计算机系统49可能是一服务器、一路由器、一同等设备(peer device)或其他通用网络节点,并通常包括与个人计算机系统20相关的所描述的多种或所有元件,尽管在图1中只描述了一存储设备50。图1中描述的逻辑连接包括一局域网(LAN)51以及一广域网(WAN)52。这些网络环境在办公室、企业计算机网络、内部网以及Internet中是很普遍的。

当用在一局域网环境中时,个人计算机系统20通过一网络接口53连接到LAN 51。当用在WAN网络环境中时,个人计算机系统20通常包括一调制解调器54或其他用于在WAN 52,如Internet中建立通信的装置。调制解调器54(可能是内置或外置的)经串行端口46被连接到系统总线23上。在网络环境中,所述与个人计算机系统20有关的程序模块或其部分可能存储在远程存储设备50中。应当认识到,所示的网络连接是示范性的,可能使用在计算机系统间建立通信链接的其他装置。进一步应意认到,本发明能在除个人计算机系统外的主机或服务器计算机系统上等效地实现,并且能通过除CD-ROM以外的装置等效地传送,例如,通过网络连接接口53来传送。

虽然本发明的原理具有广泛的适用性,但应当理解,用于广泛使用的个人计算机系统20的典型实施例的结构如FOSS应用程序36提供了显著的优点。特别是,本说明书中描述的包括用于执行本发明的方法的计算机执行指令的FOSS应用程序36被特别地设计成当在传统个人计算机系统20上执行时显示出可接受的存储使用以及性能特征。在这种配置查阅程序模块36的过程中,某些折衷平衡,特别是在使存储器存储最小化和提高性能速度这些通常为冲突的目标之间必然会发生。应当理解,在本说明书描述的典型实施例中发生的折衷平衡的变化落在本发明的精神和范围内,特别是鉴于这样一种事实,即在计算机硬件和存储设备方面必然的改进将使其他折衷平衡变得可行。

图2描述一典型方法200,其中计算机程序的输出被改变而没有改变源代码。在该实施例中,描述了用于生成待运输包裹的标签的程序。方法200开始于起始块205并前进至步骤210,在该步中向系统提供包含特定的名称/数值对的一输入数据文本文件38。如图3所示,包含在输入数据文本文件38中的名称/数值对提供将在输出中显示的信息。图3中的栏A说明名称,栏B说明特定的名称/数值对的相应值。特别地,名称/数值对305至330可能表示包裹起运地的地址,而名称/数值对335至360可能表示包裹运达地的地址。名称/数值对365可能表示用于一条形码的信息,该条形码可被放置在标签上。另外,表示一图标或标志的图形数据可能包括在名称/数值对中以及包括在输入数据文本文件38中。应注意,包含在输入数据文本文件中的信息自身没有给出格式的指示,且输入数据文本文件38的名称/数值对不需要根据要求的结构排列。

回到图2,方法200继续前进到步骤215,在此向该系统提供包含格式化说明的一方法文本文件39。提供给该系统的方法文本文件39可能从多个存储在硬盘32上的类似文件中选择并可能由包含在输入数据文本文件38中的信息指定。例如,如图3所示的输入数据文本文件38可能包含指定名为4X6Label的一特定方法文本文件的特定名称/数值对370。包含在方法文本文件39中的格式化说明可能指定标签大小、字体以及字号,以及诸如标志或条形码的图标的位置。另外,如果在输入数据中指定一特定的目的如某一外国,则该格式化将反映该用户或该目的地的要求。

创建适当的格式化输出从方法文本文件39开始。该方法文本文件39压缩用于标签、报告和其他格式化输出的规则并在FOSS应用程序36的初始化过程中加载。它由包含若干语句(artifact)的格式规则描述符和/或其他格式说明组成。

每一个语句可能具有一恒定值或指明与输入数据文本文件38的名称/数值对中提供的一数据的连接。输入数据文本文件38中提供的该数据必须在一名称/数值对中并具有链接名称,该链接名称由各语句使用,以使获得当FOSS应用程序被执行时由输入数据文本文件38提供的数据。用于将输入数据文本文件38传递给FOSS应用程序的输送称为一个包(bag)。一个包可具有一名称、名称-数值串对以及嵌入包。该包中的项目在它们被引用为方法文本文件39中的一链接时才被提供。

方法文本文件39包含下述类型的格式规则描述符。

格式

格式项是定义如何提供或更准确地说如何打印数据到输出设备,如一标签打印机的根格式(root format)规则描述符。它包含定义格式输出大小、缺省字体、缺省线特性以及语句的格式规则描述符的集合。每一格式具有用于引用该格式方法的一名称。下面列出了多个这样的名称。

“pattern”语句

该语句被用来允许从在一单独语句格式规则描述符中的输入数据文本文件38提供多个数据项。它的操作非常象“C”编程语言的“printf()”函数。文本值的集合使用一特定格式来提供。如果该模式中引用的项目不存在于该数据包中,那么一空串被用作打印值。

“draw”语句

该语句被用作画一直线、椭圆或一矩形。

“composite”语句

该语句被用来调用另一方法文本文件以向输出设备提供数据。然而,在该情况中被调用的格式可能引用用于数据的一不同的包并具有在输出设备上下文中的一不同位置。例如,可能是定义如何打印一地址的一格式准则。它可能被重新用来打印“ship from(起运)”和“shipto(运达)”地址。然而,所使用的数据和提供位置是不同的。例如,该“ship to”组合语句将引用正好包含“ship to”地址的一嵌入包并具有将该地址放置在标签上的一唯一位置。

“graphic”语句

该语句被用来在输出环境上打印一图形图像,这可能用来在一运输标签上放置一标志。

“text”语句

该语句用于从输入数据文本文件38提供一单个数据项。

“passthrough”语句

这是用来忽略该设备上下文的任何操作系统控制并将所提供的数据直接发送给输出设备如一标签打印机的一特殊情况语句。如果设备驱动器没有利用由一打印机提供的特殊特点,则可能使用该语句。

“Maxi-code”语句

该语句用于收集来自所提供的数据包的特殊数据并将其提供给一Maxi代码图像。

“hrcs-code”语句

该语句用于收集来自所提供的输入数据文本文件38的特殊数据并将其提供给一人类可读的分类代码。一个分类代码是一文本串,用于分类包裹。

“if”语句修改量

这是一个任选的语句修改量(modifier)。它表示在提供该语句前将执行和通过一测试。该测试是允许该语句对输入数据文本文件38中的5个实体和/或项目值进行测验的一布尔表达式。

“block”语句修改量

这是所有语句使用来指定将该语句文本放置在定义的格式方法中何处的修改量。该块在格式空间中定义一矩形区域。

“pen”语句修改量

这是指定线条类型和线宽值的一任选语句修改量。

“font”语句修改装置

这是指定字体类型和字号值的一任选语句修改量。

用于书写一方法文本文件39的规则被定义成一巴科斯-诺尔范式(BNF)语法。BNF语法是用来描述上下文敏感的文本集的技术,该文本集描述一种语言。在这种情况下,所使用的语法表示用于描述一方法文本文件39的规则。使用该语法所生成的样本方法文本文件39如图4所示。该语法中的每一行表示有关如何分析一方法文本文件中的文本的一规则。该规则具有以下的格式:

Rule name=>Rule

“=>”的左边是规定什么期望出现在被分析的文本流中的产生式规则(production rule)的名称。右边是期望在输入流中出现的标记的清单。为支持各种语法实例,可选择内容必须被容纳在各语法规则中。单个规则可能具有零、一或更多可能性。实际的产生式依赖输入流的上下文。例如,在方法文本文件39中的特殊位置可能期望一格式规则。它可以是一线、文本、圆、Maxi代码符号或任何被定义的语句。在一些情况中,该规则可能不生成标记。对这种情况,一“$”被规定为可选择的规则。一些标记被包含在角括号(“<>”)中。这表示该标记实际上不是输入串中的文本,但具有由另一规则限定的定义。已知这是一种非终端标记。产生式中所有其他文本表示被称为终端标记的实际文本。

用于创建一方法文本文件的语法在下述表格中定义。

                                         表I

规则名称产生式/替换产生式<start>=>[<formatBagName><formatBags>]<formatBags>            =>,<formatBag><formatBags>|$<formatBag>=>[<formatBagName><defaults>formatBagItems>]<formatBagItems>=><formatBagItem>,<formatBagItems>|$<formatBagItem>=><bagDataItem>|<embeddedFormatBag><defaults>=>,<default><defaults>|$<default>=><font>|pen><bagDataItem>=><itemName>=<ItemValue>|<itemValue><embeddedFormatBags>=>,<embeddedFormatBag><embeddedFormatbags>|$<embeddedFormatBag>=><textLineBag>|<graphicBag>|<patternBag>|<c ompositeBag>|<passThroughBag>|<drawBag>|<reportBag><textLineBag>=>[text<artifactRenderCondition><link>,<font>,<block>]<graphicBag>=>[graphic<artifactRenderCondition>,<resource>,<block>]<patternBag>=>[pattern<artifactRenderCondition>,<patternDescription><patternArgs>,<block>,<font>,<patternOptions>]<compositeBag>=>[composite<drtifactRenderCondition>,<bagLink>,<block>]<bagLink>=><dataBagOption>,format=<bagPathDescription><passThroughBag>=>[pass<artifactRenderCondition>,<patternDescription><patternArgs><passThro ughArgs>]<<drawBag>=>[<drawType><artifactRenderCondition>,<block><pen>]<patternArgs>=>,<patternArg><patternArgs>|$<patternArg>=>arg<argNumber>=<link><patternOptions>        =><patternOption><patternOptions>|$<pdtternOption>         =><justify>|<noBlankline><justify>               =>justify=<justifyOptions><justifyOptions>=>center|left|right<noBlankLine>=>noBlankLine<booleanAssign>|$
规则名称产生式/替换产生式<block>=>[block,<mmeters>,<mmeters>,<mmeters>,<mmeters>]<font>=>[font,name=<fontName>,size=fontSize><fontOptions>]<fontOptions>=>,<fontOption><fontOptions>|$<fontOption>=>bold<booleanAssign>|italic<booleanAssign>|<justify>|forcefit<booleanAssign>|reverse<booleanAssign><link>=>link=<bagItempathDescription><startPath>=><parentBag>|<rootBag><rootBag>=>/(forward slash)<parentBag>         =>.<parentBag>|$<artifactRenderCondition>=><renderCondition>|$<renderCondition>=>,[if<renderConditions>]<renderConditions>=><renderConditionOptions><renderConditions>|$<renderConditionsOptions>=><bagExistCondition>,<bagPathDescription>,|<itemExistCondition>,<bagItemPathDescripti on>|<itemEqualCondition>,<bagItemPathDescripti on>,<value>|,[or]|,[and]|<renderCondition><bagExistCondition>=>bagExist|noBagExist<itemExistCondition>=>ItemExist|noItemExist<itemEqualCondition>=>equal|notEqual<resource>=>[resource,<module>resource=<resourceName]<module>=>module=<moduleName>,|$<drawType>=>drawLine|drawRectangle|drawEllipse<pen>=>,[pen,width=<mmeters><penOptions>]|$<penOptions>=>,<penOption><penOptions>|$<penOption>=>style=<penStyle>|fill=<booleanAssign><penStyle>=>solid|dash|dot<passThroughArgs>=>,<passThroughArg><passThroughArgs>|$<passThroughArg>=>To be defined later.<booleanAssign>    =>=<bool><bool>=>1|0|true|false|yes|no<bagPathDescription>=><startPath><bagPath>

                            表II

   规则名称说明   <bagItemPathDescription>=><bagPathDescription><itemName>   <start>这是用于格式包描述符的根产生式。它规定至少一格式包说明必须被指定。最外部的包具有一嵌入包的容器。这些嵌入包是说明由用户按它们的名称引用的一格式的实际的包。它们将具有诸如名称:“4x6Label”、“pickupLabel”、“pickupReport”...。下述的表格示出了能用于打印一标签的两种格式以及能被用在该标签格式中的两种实用的格式。   <formatBags>这规定根格式包可能包含描述其他格式的另外的嵌入包。   <formatBag>一格式包包含一包名称以及项目。它是定义在一设备上下文中提供什么以及如何提供商业信息的根描述符。   <formatBagName>一格式包的字母数字名称。这是由一用户用以表示如何执行该提供的符号名。例如,名称可能是“4x6label”、“pickup”、“eltron”   <formatBagItems>一格式包可能包含多个项目   <formatBagItem>该项目可能是一数据项或一嵌入包   <bagDataItem>一数据项可能是一命名的数值对或只是一数值   <embeddedFormatBags>在一单个包中可能有多个嵌入式格式包   <embeddedFormatBag>一嵌入式格式包表示可能在设备上下文页上提供的语句的类型。它们可能是一正文行、图形图象、模式(多项目)输出、组合、通过、画一形状或用于报告生成。   <textLineBag>这规定一单个正文行将在一特定块位置使用一特定字体输出   <graphicBag>这规定图形图像资源将在一特定块位置输出。   <patternBag>这规定来自一格式化(sprintf)串的结果将被输出。用于该格式的数据值将被规定为到商业数据包的符号链接。然后在格式选项被复制到设备上下文之前将其应用到输出串。   <compositBag>这规定一格式化说明被用在另一格式中。它规定从哪里获取该数据,使用什么子格式以及将它放置在哪里。
    <passThroughBag>这规定将生成一格式化文本串并将其直接传递到输出装置。该装置上下文将不改变所生成的文本。这与<formatBag>相似,但没有任何格式选项。    <drawBag>这规定在一特定位置(由<block>指定)上将画出的形状。一画笔被指定用于该绘图。    <reportBag>这规定格式化说明将被用作一报告生成器。该报告包含一页眉、页脚、行项目。该报告可能跨越多页并依赖于报告中的格式和项目数。该数据包包含具有相同名称的多个包。它们表示被用来生成报告上的一行的信息。    <patternDescription>这是一与sprintf兼容的打印语句。它包含正文、换码序列、以及变量(arg)位置标志符(holder)如%s,以及%c。    <patternArgs>清单中变量的数目必须与在<patternDescriptions>中规定的替换变量的数目相对应。    <patternArg>这为<patternDescription>规定一特殊数据变量。    <argNumber>这是用于第一项目的从1开始的一数值并为每一<patternDescription>变量递增。该变量必须是连续的。    <patternOptios>这被用来规定一个或多个模式(pattern)语句提供选项。    <formatOption>该可能的格式语句选项是对齐的且没有空行/嵌入/空行/训练空白行    <noBlankLine>如果为真,则没有空行/嵌入/空行/训练空白行    <block>这规定用于一提供的输出块的一开始和结束位置。在每一块中有四个位置值。头两个表示该块的开始位置的左上部(x,y)坐标,后两个是结束位置的右下部(x,y)坐标。测量单元采用米制的毫米。如果该值不必要,则位置保留为空白。    <font>这规定将被使用的一字体名称以及字号。    <fontOptions>这规定可能有一个或多个字体选项。    <fontOption>该有效的字体选项是粗体、斜体、对齐或颠倒的正文输出。    <justify>规定对齐选项。    <justifyOptions>该对齐选项是:居中、左对齐或右对齐。    <link>这被用来链接至商业包中的一数据项。一<bagItemPath>被提供给该包数据项。
    <bagLink>这被用来将一商业包与一组合的格式说明联系起来。    <resource>这被用来规定将被用于一图形提供输出的资源。    <resourceName>这是被分配给在一DDL或EXE文件中的一资源的标识符。    <module>这是包含该资源的一dll或exe模块。    <drawType>可画出的形状的类型为:直线。这规定一直线。起始和结束位置由<block>规定。    rectangle这规定将画出一矩形。其尺寸由<block>的起始和结束位置规定。    ellipse这规定将画出一椭圆。其大小和形状由<block>的起始和结束位置规定。    <pen>这定义将被用来画出该形状的笔。它规定线的宽度和任何可能的选项。    <penOptions>可能有一个或多个笔选项。    <penOption>这是一个笔的式样选项。    <penStyle>该笔的式样选项能规定画实线、虚线或使用点。    <formatArg>这为商业包中的一项目规定将被用作一(sscanf)格式化描述符输入的一变量。如果该商业包不包含该项,则用一空值来代替该变量值。    <argNumber>从1开始并为将被提供给一格式的每一变量连接地递增。    <fontName>这是已登记过的一字体的名称。    <fontSize>这是一有效的字号    <bool>1|0|true|false|yes|no(对用作区别来说只有第一字符是必要的。如果没有规定值,则true为缺省值。)    <bagItemPath>这是一包中的数据项的名称。该名称通过使用圆点记法能以一嵌入式包的名称来限定。例如“shipment.shipto.city”将规定运输(shipmeut)包中的运至(shipto)包的数据项将被访问。    <bagPath>这是一嵌入式包的名称。该包通过使用圆点记法能以另一个嵌入式包的名称来限定。例如“shipment.shipto”将规定运输包中的运至(shipto)包将被访问。    <mmeters>这是在一设备上下文中的标准物理距离测量单元。规定其使用单位毫米。    <moduleName>这是一dll或exe文件的名称。    $如果生成的话没有产生式

作为上述规则的一个应用的例子,下述两个规则能从表I获得。

<font>=>,[font,name=<fontName>,size=fontSize><fontOptions>]<pen>=>,[pen,width=<mmeters><penOptions>]|$

应用上述两个规则,可能分别产生来自如图4所示的方法文本的下述两行405和410。

,[font,name=Arial,size=8]

,[peh,width=1,style=solid]

如从行405所看到的,已知的磅值为“8”的“Arial”特定字体将被用来在标签上打印字母数字记号。另外,从行410可看到,画笔宽度被选择为“1”而且将画“实线”而不是例如虚线。

回到图2,方法200从步骤215前进到步骤220,在该步中系统将方法文本文件39转换成适于在个人计算机系统20上执行的一系列可执行对象。从步骤220,该方法继续进行到判定块225,在此用户输入判定该用户是否希望提供输出。可能接收该提供的输出的介质的例子包括激光打印机、点阵打印机、喷墨打印机、针式绘图仪或静电绘图机。另外,该输出可能以包括e-mail信息、ftp文件、gif文件或类似电子文件的一种电子格式来提供。本领域普通技术人员应当理解,本发明可能使用各种形式的输出装置来实现。如果在判定块225用户不希望提供输出,则该方法继续前进到方法结束的步骤230。然而,如果在判定块225用户希望提供输出,则该方法前进至步骤235。

在步骤235。该系统执行在步骤220中生成的一系列可执行对象40以根据方法文本文件39的格式化说明提供输入数据文件38的名称/数值对。然后该方法200继续前进到步骤240,在此系统响应用户输入改变方法文本文件39。这些改变可能包括改变将提供的标签的大小、正文字体及字号,或改变将被放置在该标签上的诸如标志或条形码等图标的位置。从步骤240,该方法前进到步骤245,在此系统将改变后的方法文本文件转换成一系列改变的可执行对象41。接着,该方法前进到判定块250,在此用户输入判定该用户是否希望提供输出。如果该用户不希望提供输出,则该方法前进到本方法的结束步骤255。然而,如果在判定块250用户希望提供输出,则该方法前进到步骤260。在步骤260,系统执行该改变后的一系列可执行对象41以根据方法文本文件39的改变后的格式化说明提供输入数据文件38的名称/数值对。由于使用了改变后的一系列可执行对象,因此所提供的输出格式将反映先前所做的改变。从步骤260,方法200前进到结束块265。

根据上述描述,应理解本发明提供一种用于改变一计算机程序的输出而不改变源代码的方法。还应当理解,上述说明仅涉及本发明的典型实施例,并且对此还可能做出许多改变而不脱离由下述的权利要求书限定的本发明的精神和范畴。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号