JP5194952B2 - Data processing device - Google Patents

Data processing device Download PDF

Info

Publication number
JP5194952B2
JP5194952B2 JP2008091529A JP2008091529A JP5194952B2 JP 5194952 B2 JP5194952 B2 JP 5194952B2 JP 2008091529 A JP2008091529 A JP 2008091529A JP 2008091529 A JP2008091529 A JP 2008091529A JP 5194952 B2 JP5194952 B2 JP 5194952B2
Authority
JP
Japan
Prior art keywords
data
memory
partial
size
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008091529A
Other languages
Japanese (ja)
Other versions
JP2009241449A (en
Inventor
貞明 宮▲崎▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2008091529A priority Critical patent/JP5194952B2/en
Publication of JP2009241449A publication Critical patent/JP2009241449A/en
Application granted granted Critical
Publication of JP5194952B2 publication Critical patent/JP5194952B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Record Information Processing For Printing (AREA)
  • Image Generation (AREA)

Description

本発明は、第1データから第2データを作成し、第2データから第3データを作成するデータ処理に関する。   The present invention relates to data processing for creating second data from first data and creating third data from second data.

様々な処理を実行する過程において、メモリフルのエラーが生じないようにメモリ管理を行なう必要がある。例えば、下記の特許文献1には、印刷用データを作成するための2つの処理(ジョブ)を並列的に実行する場合に、各ジョブの状態情報(印刷枚数等の情報)及び優先度情報(コピー優先、プリンタ優先等の情報)に基づいて、一方のジョブのためのメモリ回路と他方のジョブのためのメモリ回路についてメモリ量の配分を修正する技術が開示されている。   It is necessary to perform memory management so that a memory full error does not occur in the process of executing various processes. For example, in Patent Document 1 below, when two processes (jobs) for creating print data are executed in parallel, status information (information such as the number of prints) and priority information ( Based on information such as copy priority and printer priority, a technique for correcting the distribution of the memory amount for the memory circuit for one job and the memory circuit for the other job is disclosed.

特開2006−174247号公報JP 2006-174247 A

上記の特許文献1のメモリ管理技術は確かに有用かもしれないが、その手法をあらゆるデータ処理技術に適用することはできない。本発明者は、二段階に亘ってデータが変換されるデータ処理装置の開発に携わっている。即ち、この種のデータ処理装置では、第1データから第2データを作成し、その第2データから第3データを作成する。本明細書では、このような二段階に亘ってデータを変換する処理のための新規なメモリ管理技術を提供する。   Although the memory management technique of the above-mentioned Patent Document 1 may be useful, it cannot be applied to any data processing technique. The present inventor is engaged in the development of a data processing apparatus in which data is converted in two stages. That is, in this type of data processing apparatus, the second data is created from the first data, and the third data is created from the second data. The present specification provides a novel memory management technique for such a process of converting data over two stages.

本発明は、第1データから第2データを作成し、前記第2データから第3データを作成するデータ処理装置であり、前記第1データを入力する第1データ入力手段と、前記第1データに含まれる複数個の部分第1データから前記第2データに含まれる複数個の部分第2データを順次作成するための第1プログラムを記憶している第1プログラム記憶手段と、前記第2データに含まれる前記複数個の部分第2データから前記第3データを作成するための第2プログラムを記憶している第2プログラム記憶手段と、前記第2データと前記第3データの両方を格納するために利用されるメモリと、前記第1プログラムに従って処理を実行することが可能であり、前記第2プログラムに従って処理を実行することが可能であり、それらの両処理のためのメモリ管理を統括して実行する制御手段とを備え、前記制御手段は、前記メモリ内の使用可能メモリサイズよりも小さいメモリサイズであって、前記第2データの作成に使用されるべき前記メモリサイズである所定値を特定し、前記複数個の部分第1データのうちの処理対象の部分第1データを処理すべき毎に、仮に、当該処理対象の部分第1データから1個の部分第2データを前記メモリ内に作成したら、前記1個の部分第2データを含む前記メモリ内の2個以上の部分第2データの合計データサイズが、前記所定値以上になるのか否かを判断し、前記合計データサイズが前記所定値以上にならないと判断される場合に、前記処理対象の部分第1データから前記1個の部分第2データを前記メモリ内に作成し、前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に圧縮状態の第3データが存在しない場合に、(A1)前記メモリ内のM個(前記Mは1以上の整数)の部分第2データから前記第3データを前記メモリ内に作成し、(A2)前記メモリ内の前記第3データを圧縮して、前記圧縮状態の第3データを前記メモリ内に作成し、(A3)前記M個の部分第2データを前記メモリから削除し、前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に前記圧縮状態の第3データが存在する場合に、(B1)前記圧縮状態の第3データを伸張して、伸張状態の第3データを前記メモリ内に作成し、(B2)前記メモリ内のN個(前記Nは1以上の整数)の部分第2データと、前記メモリ内の前記伸張状態の第3データと、から、新たな第3データを前記メモリ内に作成し、(B3)前記メモリ内の前記新たな第3データを圧縮して、新たな圧縮状態の第3データを前記メモリ内に作成し、(B4)前記N個の部分第2データを前記メモリから削除し、前記制御手段は、前記メモリ内の前記第3データの合計データサイズが、前記使用可能メモリサイズから前記所定値が減算された値よりも大きくなるのか否かに関わらず、前記(B2)を実行する、ことを特徴とするデータ処理装置である。
本明細書によって開示される1つの形態の技術は、第1データから第2データを作成し、その第2データから第3データを作成するデータ処理装置である。このデータ処理装置は、第1データ入力手段と、第1プログラム記憶手段と、第2プログラム記憶手段と、メモリと、制御手段とを有する。第1データ入力手段は、第1データを入力する。例えば、第1データが他のデバイスから送信される場合、第1データ入力手段は、他のデバイス(パーソナルコンピュータ、サーバ、ポータブルメモリ等)から送信された第1データを入力してもよい。第1プログラム記憶手段は、第1データから第2データを作成するための第1プログラムを記憶している。第2プログラム記憶手段は、第2データから第3データを作成するための第2プログラムを記憶している。メモリは、第2データと第3データの両方を格納するために利用される。制御手段は、第1プログラムに従って処理を実行することが可能であり、第2プログラムに従って処理を実行することが可能であり、それらの両処理のためのメモリ管理を統括して実行する。
The present invention is a data processing apparatus that creates second data from first data and creates third data from the second data, first data input means for inputting the first data, and the first data First program storage means for storing a first program for sequentially creating a plurality of partial second data included in the second data from a plurality of partial first data included in the second data, and the second data Second program storage means for storing a second program for creating the third data from the plurality of partial second data included in the plurality of partial data, and storing both the second data and the third data The memory used for the processing, the processing can be executed according to the first program, the processing can be executed according to the second program, and both of the processing Control means for performing overall memory management, the control means having a memory size smaller than an available memory size in the memory, and the memory size to be used for creating the second data Each time the partial first data to be processed of the plurality of partial first data is to be processed, it is assumed that one partial second from the partial first data to be processed When data is created in the memory, it is determined whether a total data size of two or more partial second data in the memory including the one partial second data is equal to or greater than the predetermined value; When it is determined that the total data size does not exceed the predetermined value, the one partial second data is created in the memory from the partial first data to be processed, and the total data size is When it is determined that the value is equal to or greater than a predetermined value, and there is no compressed third data in the memory, (A1) M pieces of second data in the memory (where M is an integer equal to or greater than 1) To create the third data in the memory, (A2) compress the third data in the memory to create the compressed third data in the memory, and (A3) the M data In the case where the partial second data is deleted from the memory and the total data size is determined to be equal to or larger than the predetermined value, and the third data in the compressed state exists in the memory, (B1) Decompressing the compressed third data to create the decompressed third data in the memory; (B2) N pieces of partial second data in the memory (where N is an integer equal to or greater than 1); The decompressed state in the memory New third data is created in the memory from the third data, and (B3) the new third data in the memory is compressed, and the new compressed third data is stored in the memory. (B4) deleting the N pieces of partial second data from the memory, and the control means determines that the total data size of the third data in the memory is a predetermined value from the usable memory size. Regardless of whether or not becomes larger than the subtracted value, (B2) is executed.
One form of technology disclosed in this specification is a data processing apparatus that creates second data from first data and creates third data from the second data. The data processing apparatus includes first data input means, first program storage means, second program storage means, memory, and control means. The first data input means inputs the first data. For example, when the first data is transmitted from another device, the first data input means may input the first data transmitted from another device (personal computer, server, portable memory, etc.). The first program storage means stores a first program for creating second data from the first data. The second program storage means stores a second program for creating third data from the second data. The memory is used to store both the second data and the third data. The control means can execute the process according to the first program, can execute the process according to the second program, and performs overall memory management for both of these processes.

具体的に言うと、制御手段は、以下の各処理を実行する。
(1)第1データを構成するデータから第2データを作成する。
(2)第1データを構成する次のデータが存在するのか否かを判断する。
(3)上記の(2)で肯定的に判断された場合に、第1データを構成する次のデータから第2データが作成されたら第2データの合計データサイズが所定値以上になるのか否かを判断する。
(4)上記の(3)で否定的に判断された場合に、上記の(1)を実行させる。
(5)第2データから第3データを作成する。
(6)第3データを圧縮することによって圧縮第3データを作成する。
(7)第2データを削除する。
(8)上記の(3)で肯定的に判断された場合に、上記の(5)と(6)と(7)を実行させる。
(9)圧縮第3データを伸張する。
(10)上記の(2)で否定的に判断された場合に、圧縮第3データが存在することを条件として上記の(9)を実行させる。
Specifically, the control means executes the following processes.
(1) The second data is created from the data constituting the first data.
(2) It is determined whether there is next data constituting the first data.
(3) Whether the total data size of the second data is equal to or greater than a predetermined value when the second data is created from the next data constituting the first data when the determination in (2) above is affirmative Determine whether.
(4) When a negative determination is made in the above (3), the above (1) is executed.
(5) Create third data from the second data.
(6) Create compressed third data by compressing the third data.
(7) Delete the second data.
(8) When a positive determination is made in the above (3), the above (5), (6), and (7) are executed.
(9) Decompress the compressed third data.
(10) When a negative determination is made in (2) above, the above (9) is executed on condition that the compressed third data exists.

なお、上記の(3)の処理は、様々な手法を利用して実行することができる。例えば、以下の(A)及び(B)のいずれかの手法を利用することができる。
(A)例えば、制御手段は、第2データを記憶するための第2データ用メモリサイズが予め決められている場合、第1データを構成する次のデータから第2データが作成されたら第2データの合計データサイズが第2データ用メモリサイズ以上になるのか否かを判断してもよい。この場合、第2データ用メモリサイズが上記の(3)の「所定値」になる。
(A’)なお、この例において圧縮第3データが存在している場合、制御手段は、第2データの合計データサイズのみが第2データ用メモリサイズ以上になるのか否かを判断してもよいし、第2データの合計データサイズと圧縮第3データのデータサイズとの和が第2データ用メモリサイズ以上になるのか否かを判断してもよい。後者の場合、上記の(3)の所定値は、第2データ用メモリサイズから圧縮第3データのデータサイズが減算された値になる。即ち、上記の(3)の所定値は、変動値であってもよい(逆に上記の(A)のように固定値でもよい)。
The process (3) can be executed using various methods. For example, any of the following methods (A) and (B) can be used.
(A) For example, when the second data memory size for storing the second data is determined in advance, the control means outputs the second data when the second data is created from the next data constituting the first data. It may be determined whether or not the total data size of the data is greater than or equal to the second data memory size. In this case, the second data memory size becomes the “predetermined value” in (3) above.
(A ′) When the compressed third data is present in this example, the control unit may determine whether only the total data size of the second data is equal to or larger than the second data memory size. Alternatively, it may be determined whether or not the sum of the total data size of the second data and the data size of the compressed third data is greater than or equal to the second data memory size. In the latter case, the predetermined value of (3) is a value obtained by subtracting the data size of the compressed third data from the second data memory size. That is, the predetermined value of (3) may be a fluctuation value (inversely, it may be a fixed value as in (A) above).

(B)また、例えば、制御手段は、第3データを記憶するための第3データ用メモリサイズが予め決められている場合、第1データを構成する次のデータから第2データが作成されたら上記の第3データ用メモリサイズを圧迫することになることになるのか否かを判断してもよい。即ち、制御手段は、第2データの合計データサイズが増加することに起因して、残存メモリサイズが上記の第3データ用メモリサイズ以下になるのか否かを判断してもよい。この例の構成も、「第2データの合計データサイズが所定値以上になるのか否かを判断する」ことに等しい。即ち、「第1データを構成する次のデータから第2データが作成されたら第2データの合計データサイズが所定値以上になるのか否かを判断する」ことは、「第1データを構成する次のデータから第2データが作成されたら第2データの合計データサイズが増加することに起因して、残存メモリサイズが所定値以下になるのか否かを判断する」ことに等しい。この点については、後述の実施例においてさらに詳しく説明する。 (B) Further, for example, when the third data memory size for storing the third data is determined in advance, the control means generates the second data from the next data constituting the first data. It may be determined whether the third data memory size is to be compressed. That is, the control means may determine whether or not the remaining memory size is equal to or smaller than the third data memory size due to an increase in the total data size of the second data. The configuration of this example is also equivalent to “determine whether or not the total data size of the second data is equal to or larger than a predetermined value”. That is, “when the second data is created from the next data constituting the first data, it is determined whether or not the total data size of the second data exceeds a predetermined value” This is equivalent to determining whether or not the remaining memory size is equal to or smaller than a predetermined value due to the increase in the total data size of the second data when the second data is created from the next data. This point will be described in more detail in Examples described later.

このデータ処理装置は、第1プログラムと第2プログラムのそれぞれの処理のメモリ管理を統括的に実行しながら、上記の(1)〜(10)の処理を実行する。メモリを効率的に利用しながら二段階に亘ってデータを変換することができる。仮に、メモリ管理を個別に行なうと、各プログラムの処理のためにメモリを分配する必要がある。この場合、一方のプログラムの処理ではメモリが余っているにもかかわらず、他方のプログラムの処理でメモリがフルになると、その時点でエラーになってしまう。例えば、第2データ用メモリと第3データ用メモリとを個別に管理すると、以下の事象が生じることがある。例えば、上記の(3)で肯定的に判断された場合に、第2データから第3データを作成すると、第3データ用メモリがメモリフルになる可能性がある。第2データ用メモリが余っている状況であっても、第3データ用メモリがメモリフルになると、エラーになってしまう。これに対し、本技術のように各プログラムの処理のためのメモリ管理を統括的に実行すると、各プログラムの処理でメモリを共用することができる。このために、メモリの一部が余っているにもかかわらずメモリフルのエラーが生じてしまうという事象が発生することを避けることができる。上記の例の場合、第2データ用メモリが余っている状況であるのであれば、その余っているメモリを利用して第3データを作成し、その第3データを圧縮することができる(メモリフルのエラーを回避できる)。本技術によると、二段階に亘ってデータを変換する処理においてメモリフルのエラーの発生を抑制することができる。   The data processing apparatus executes the processes (1) to (10) while performing overall memory management of the processes of the first program and the second program. Data can be converted in two stages while efficiently using the memory. If memory management is performed individually, it is necessary to distribute the memory for processing each program. In this case, an error occurs at that point in time when the memory of the other program is full but the memory becomes full by the other program. For example, when the second data memory and the third data memory are individually managed, the following events may occur. For example, if the determination in (3) above is affirmative, if the third data is created from the second data, the third data memory may become full. Even if the second data memory is surplus, an error occurs when the third data memory becomes full. On the other hand, if memory management for the processing of each program is comprehensively executed as in the present technology, the memory can be shared by the processing of each program. For this reason, it is possible to avoid the occurrence of an event that a memory full error occurs even though a part of the memory is left. In the case of the above example, if the second data memory is surplus, the third data can be created using the surplus memory and the third data can be compressed (memory). To avoid full errors). According to the present technology, it is possible to suppress the occurrence of a memory full error in the process of converting data in two stages.

上記の制御手段は、以下の処理を実行するようにしてもよい。即ち、制御手段は、圧縮第3データが存在する状態において上記の(3)で肯定的に判断された場合に、上記の(9)を実行させるとともに、上記の(5)で作成された第3データと上記の(9)で伸張された第3データとを含む新たな第3データについて上記の(6)を実行させてもよい。   The above control means may execute the following processing. That is, the control means causes the above (9) to be executed when the affirmative determination is made in the above (3) in the state where the compressed third data exists, and the control data created in the above (5). The above (6) may be executed for new third data including the three data and the third data expanded in the above (9).

上記の第1データは、例えば、ページ記述言語で記述されたデータ(例えばベクタデータ)であってもよい。また、上記の第2データは、例えば、ページ記述言語と異なる種類の言語で記述されたデータ(例えばベクタデータ)であってもよい。また、上記の第3データは、例えば、ビットマップデータであってもよい。この構成によると、ページ記述言語のデータを異なる種類の言語のデータに変換し、変換後のデータをビットマップデータに変換する処理において、メモリフルのエラーの発生を抑制することができる。なお、本明細書で使用する「ページ記述言語」という用語は、ページという概念を利用してデータを記述するためのあらゆる言語を含む概念である。ページ記述言語の例として、例えば、PDF(Portable document Format)、PS(Post Script)等を挙げることができる。また、ワープロソフト、表計算ソフト、描画ソフト等で利用されている言語の中でページという概念を利用してデータを記述する言語も、ページ記述言語と呼ぶことができる。なお、以下では、ページ記述言語のことをPDL(Page Description Language)と呼ぶことがある。また、この技術は、印刷用ビットマップデータを作成するための技術に限定されることはなく、表示用ビットマップデータを作成するための技術にも利用することができる。上記の「ビットマップデータ」は、多諧調ビットマップデータであってもよいし、印刷用ビットマップデータ(例えば「0」と「1」の二値)であってもよい。   The first data may be data (for example, vector data) described in a page description language, for example. The second data may be data (for example, vector data) described in a language different from the page description language, for example. Further, the third data may be bitmap data, for example. According to this configuration, it is possible to suppress the occurrence of a memory-full error in the process of converting page description language data into different types of language data and converting the converted data into bitmap data. Note that the term “page description language” used in this specification is a concept including all languages for describing data using the concept of a page. Examples of page description languages include PDF (Portable Document Format) and PS (Post Script). A language that describes data using the concept of a page among languages used in word processing software, spreadsheet software, drawing software, and the like can also be called a page description language. In the following, the page description language may be referred to as PDL (Page Description Language). Further, this technique is not limited to the technique for creating the printing bitmap data, and can also be used for the technique for creating the display bitmap data. The “bitmap data” may be multi-tone bitmap data, or may be print bitmap data (for example, binary of “0” and “1”).

なお、制御手段が、上記の(2)の判断を行なうために利用する第1データの単位は、特に限定されない。例えば、制御手段は、上記の(2)において、1ページ分の第1データの中に次のデータが存在するのか否かを判断してもよい。この場合、ページ単位で上記の(2)の判断が行なわれる。即ち、制御手段は、1ページ分のPDLのデータから上記の異なる言語のデータが作成された場合に、上記の(2)で肯定的に判断することになる。一方において、制御手段は、例えば、複数ページ単位(例えば2ページ単位)で上記の(2)の判断を行なってもよいし、所定量のデータサイズを単位として上記の(2)の判断を行なってもよい。   The unit of the first data used for the control means to make the above determination (2) is not particularly limited. For example, the control means may determine whether or not the next data exists in the first data for one page in (2) above. In this case, the above determination (2) is made for each page. That is, the control means makes an affirmative determination in the above (2) when the data in the different language is created from the PDL data for one page. On the other hand, for example, the control means may make the above determination (2) in units of a plurality of pages (for example, in units of two pages), or make the above determination (2) in units of a predetermined amount of data size. May be.

本明細書では、上記のデータ処理装置を実現するためのコンピュータプログラムも提供する。このコンピュータプログラムは、第1データから第2データを作成するための第1プログラムと、第2データから第3データを作成するための第2プログラムとを含んでいる。さらに、このコンピュータプログラムは、第1プログラムに従って第1データから第2データを作成する処理と、第2プログラムに従って第2データから第3データを作成する処理と、それらの両処理のためのメモリのメモリ管理を統括して実行する処理とを含む制御処理をコンピュータに実行させる。この制御処理では、上記の(1)〜(10)の処理が実行される。このコンピュータプログラムによると、二段階に亘ってデータを変換する処理においてメモリフルのエラーの発生を抑制することができるデータ処理装置を実現することができる。   The present specification also provides a computer program for realizing the above data processing apparatus. The computer program includes a first program for creating second data from the first data, and a second program for creating third data from the second data. Furthermore, the computer program includes a process for creating second data from the first data according to the first program, a process for creating third data from the second data according to the second program, and a memory for both of these processes. And causing the computer to execute control processing including processing that performs overall memory management. In this control process, the above processes (1) to (10) are executed. According to this computer program, it is possible to realize a data processing apparatus capable of suppressing the occurrence of a memory full error in the process of converting data in two stages.

ここでは、以下の実施例に記載の技術の特徴の一部をまとめておく。
(形態1)第1データは、複数のコマンドを含んでいてもよい。上記の(1)の処理では、第1データを構成するコマンドから第2データを作成してもよい。上記の(2)の処理では、第1データを構成する次のコマンドが存在するのか否かを判断してもよい。
(形態2)制御手段は、1ページ分の第1データから中間言語データが作成されたことを条件として、そのページのビットマップデータを作成することを開始してもよい。
(形態3)制御手段は、ビットマップデータをバンド単位で順に作成してもよい。「バンド」は、1ページより小さい単位である。即ち、1ページは、複数のバンドの集合である。制御手段は、先頭のバンドのビットマップデータを作成する第1処理と、次のバンドのビットマップデータを作成する第2処理とを実行し、1ページ分の全てのビットマップデータが作成されるまで上記の第2処理を繰り返す。
Here, some of the features of the techniques described in the following embodiments are summarized.
(Mode 1) The first data may include a plurality of commands. In the above process (1), the second data may be created from the command constituting the first data. In the process (2), it may be determined whether or not there is a next command constituting the first data.
(Mode 2) The control means may start creating bitmap data of the page on condition that intermediate language data is created from the first data for one page.
(Mode 3) The control means may sequentially create bitmap data in band units. A “band” is a unit smaller than one page. That is, one page is a set of a plurality of bands. The control means executes a first process for creating bitmap data for the first band and a second process for creating bitmap data for the next band, and all bitmap data for one page is created. The second process is repeated until the above.

(形態4)制御手段は、使用可能なメモリサイズを特定する処理を実行してもよい。
(形態5)制御手段は、第3データを記憶するためのメモリサイズを特定する処理を実行してもよい。
(形態6)制御手段は、第2データを記憶するためのメモリサイズを特定する処理を実行してもよい。
(形態7)制御手段は、形態4〜形態6のいずれかで特定されたメモリサイズに基づいて、上記の(3)の処理を実行してもよい。
(Mode 4) The control means may execute a process for specifying a usable memory size.
(Mode 5) The control means may execute processing for specifying a memory size for storing the third data.
(Mode 6) The control means may execute a process of specifying a memory size for storing the second data.
(Mode 7) The control means may execute the process (3) based on the memory size specified in any of Modes 4 to 6.

図面を参照して実施例を説明する。図1は、本実施例のプリンタネットワークシステム2を示す。プリンタネットワークシステム2は、プリンタ10とPC60とを備える。プリンタ10とPC60は、LAN回線70を介して相互に通信可能である。PC60は、データファイル群(図示省略)を記憶している。PC60は、ユーザの操作に応じて、データファイルを印刷するようにプリンタ10に指示することができる。この場合、PC60は、ユーザの指示に応じてデータファイルをPDLに変換し、PDLで記述されたデータファイルをプリンタ10に送信する。   Embodiments will be described with reference to the drawings. FIG. 1 shows a printer network system 2 of this embodiment. The printer network system 2 includes a printer 10 and a PC 60. The printer 10 and the PC 60 can communicate with each other via the LAN line 70. The PC 60 stores a data file group (not shown). The PC 60 can instruct the printer 10 to print the data file in accordance with a user operation. In this case, the PC 60 converts the data file into PDL in accordance with a user instruction, and transmits the data file described in PDL to the printer 10.

(プリンタの構成)
図1では、プリンタ10の構成を簡単に示している。プリンタ10は、ネットワークインターフェイス12と、インターフェイス用バッファ13と、PDLデータ変換処理部14と、印刷部40等を有する。ネットワークインターフェイス12には、LAN回線70が接続されている。LAN回線70は、PC60に接続されている。プリンタ10は、ネットワークインターフェイス12とLAN回線70とを介してPC60と通信することができる。インターフェイス用バッファ13は、ネットワークインターフェイス12に入力されたデータを一時的に記憶するためのバッファである。
(Printer configuration)
FIG. 1 simply shows the configuration of the printer 10. The printer 10 includes a network interface 12, an interface buffer 13, a PDL data conversion processing unit 14, a printing unit 40, and the like. A LAN line 70 is connected to the network interface 12. The LAN line 70 is connected to the PC 60. The printer 10 can communicate with the PC 60 via the network interface 12 and the LAN line 70. The interface buffer 13 is a buffer for temporarily storing data input to the network interface 12.

PDLデータ変換処理部14は、制御部16と、プログラム記憶領域18と、共通メモリ28等を有する。制御部16は、プログラム記憶領域18に記憶されているプログラムに従って様々な処理を実行する。制御部16が実行する処理の内容については、後で詳しく説明する。プログラム記憶領域18は、中間言語データ作成プログラム20と、多値BMPデータ作成プログラム22と、メモリ管理プログラム24と、その他のプログラム26とを記憶している。   The PDL data conversion processing unit 14 includes a control unit 16, a program storage area 18, a common memory 28, and the like. The control unit 16 executes various processes according to the program stored in the program storage area 18. The contents of the process executed by the control unit 16 will be described in detail later. The program storage area 18 stores an intermediate language data creation program 20, a multi-value BMP data creation program 22, a memory management program 24, and other programs 26.

中間言語データ作成プログラム20は、PDLで記述されたデータ(以下では「PDLデータ」と呼ぶことがある)を中間言語で記述されたデータ(以下では「中間言語データ」と呼ぶことがある)に変換するためのプログラムである。中間言語データ作成プログラム20は、複数種類のPDLのそれぞれに対応するプログラムを含んでいる。例えば、中間言語データ作成プログラム20は、PDFで記述されたデータを中間言語データに変換するためのプログラムと、PSで記述されたデータを同じ中間言語データに変換するためのプログラムとを記憶している。また、本実施例の中間言語では、色を表現するためにCMYKを利用する。PDLデータにおいてRGBを利用して色が表現されている場合、中間言語に変換する際にCMYKに変換される。   The intermediate language data creation program 20 converts data described in PDL (hereinafter sometimes referred to as “PDL data”) into data described in an intermediate language (hereinafter also referred to as “intermediate language data”). It is a program for conversion. The intermediate language data creation program 20 includes programs corresponding to each of a plurality of types of PDL. For example, the intermediate language data creation program 20 stores a program for converting data described in PDF into intermediate language data, and a program for converting data described in PS into the same intermediate language data. Yes. Further, in the intermediate language of this embodiment, CMYK is used to express colors. When colors are expressed using RGB in PDL data, they are converted to CMYK when converted to an intermediate language.

PDLデータから中間言語データを介してビットマップデータを作成する手法(以下では「前者の手法」と呼ぶ)は、PDLデータから直接的にビットマップデータを作成する手法(以下では「後者の手法」と呼ぶ)と比べて、以下の点において効果的である。多くのPDLは、同じタイプのデータを記述することができる。例えば、多くのPDLは、線型グラデーションやテキストを記述することができる。第1PDLと第2PDLのそれぞれによって同じ線型グラデーション(例えば左から右に向かって赤色から青色に変わっていくグラデーション)が記述されている場合を例として説明する。   A technique for creating bitmap data from PDL data via intermediate language data (hereinafter referred to as “the former technique”) is a technique for creating bitmap data directly from PDL data (hereinafter referred to as “the latter technique”). Is effective in the following respects. Many PDLs can describe the same type of data. For example, many PDLs can describe linear gradations and text. An example will be described in which the same linear gradation (for example, gradation changing from red to blue from left to right) is described by each of the first PDL and the second PDL.

上記の例の場合、後者の手法を採用するためには、第1PDLのフォーマットで記述された線型グラデーションのベクタデータからビットマップデータを作成するためのプログラムと、第2PDLのフォーマットで記述された線型グラデーションのベクタデータからビットマップデータを作成するためのプログラムとが必要になる。   In the case of the above example, in order to adopt the latter method, a program for creating bitmap data from linear gradation vector data described in the first PDL format and a linear type described in the second PDL format are used. A program for creating bitmap data from gradation vector data is required.

これに対し、上記の例の場合、前者の手法を採用すると、第1PDLの線型グラデーションのベクタデータから中間言語データが作成され、第2PDLの線型グラデーションのベクタデータから中間言語データ(ベクタデータ)が作成される。この場合、2つの中間言語データは同じになる。そうすると、この中間言語データをビットマップデータに変換するためのプログラムがあれば、第1PDLと第2PDLのどちらで記述された線型グラデーションであっても、ビットマップデータを作成することができる。即ち、前者の手法を採用するためには、第1PDLの線型グラデーションのベクタデータから中間言語データを作成するための第1プログラムと、第2PDLの線型グラデーションのベクタデータから中間言語データを作成するための第2プログラムと、その中間言語データからビットマップデータを作成するための第3プログラムとが必要になる。即ち、第1PDLと第2PDLを処理するためのプログラムにおいて、線型グラデーションのベクタデータからビットマップデータを作成するための第3プログラム(図1の例では多値BMPデータ作成プログラム22)を共通化することができる。確かに、後者の手法と比べると、上記の第1プログラムと第2プログラムが新たに必要になる。しかしながら、ベクタデータ(PDL)をベクタデータ(中間言語)に変換するためのプログラムは、それほど大きなプログラム量を必要としない。ベクタデータをビットマップデータに変換するためのプログラムの方が大きなプログラム量を要する。第1プログラムと第2プログラムが新たに必要にはなるが、第3プログラムを共通化することができるために、全体のプログラム量は後者の手法よりも少なくて済む。   On the other hand, in the case of the above example, if the former method is adopted, intermediate language data is created from the vector data of the linear gradation of the first PDL, and the intermediate language data (vector data) is generated from the vector data of the linear gradation of the second PDL. Created. In this case, the two intermediate language data are the same. Then, if there is a program for converting this intermediate language data into bitmap data, bitmap data can be created for any linear gradation described in either the first PDL or the second PDL. That is, in order to adopt the former method, in order to create intermediate language data from the first PDL linear gradation vector data and the first PDL linear gradation vector data and second PDL linear gradation vector data. And a third program for creating bitmap data from the intermediate language data. That is, in the program for processing the first PDL and the second PDL, the third program (multi-valued BMP data creation program 22 in the example of FIG. 1) for creating bitmap data from linear gradation vector data is shared. be able to. Certainly, the first program and the second program are newly required as compared with the latter method. However, a program for converting vector data (PDL) into vector data (intermediate language) does not require a large amount of program. A program for converting vector data into bitmap data requires a larger program amount. Although the first program and the second program are newly required, since the third program can be shared, the total program amount can be smaller than that of the latter method.

多値BMPデータ作成プログラム22は、中間言語データを多諧調(本実施例ではCMYKの256階調)のビットマップデータに変換するためのプログラムである。なお、以下では、多諧調のビットマップデータのことを「多値BMPデータ」と呼ぶことがある。本実施例では、PDLデータから中間言語データを作成する処理と、中間言語データから多値BMPデータを作成する処理との両方において、共通メモリ28が使用される。これらの両処理で利用される共通メモリ28を管理するために、メモリ管理プログラム24が用意されている。即ち、メモリ管理プログラム24は、上記の両処理のメモリ管理を統括して実行するためのプログラムである。共通メモリ28を利用して上記の両処理がどのようにして実行されるのかについては、後で詳しく説明する。プログラム26は、PDLデータ変換処理において必要な他の処理を実行するためのプログラムである。   The multi-value BMP data creation program 22 is a program for converting intermediate language data into bitmap data in multi-tone (in this embodiment, 256 gradations of CMYK). Hereinafter, the multi-tone bitmap data may be referred to as “multi-valued BMP data”. In the present embodiment, the common memory 28 is used in both the process of creating intermediate language data from PDL data and the process of creating multi-level BMP data from intermediate language data. A memory management program 24 is prepared for managing the common memory 28 used in both of these processes. In other words, the memory management program 24 is a program for performing overall memory management of both processes. How both the above processes are executed using the common memory 28 will be described in detail later. The program 26 is a program for executing other processes necessary for the PDL data conversion process.

印刷部40は、プログラム記憶領域42と、バッファ48と、バンドメモリ50と、印刷機構52等を有する。なお、本実施例では、PDLデータ変換処理部14の制御部16が、印刷部40の制御部を兼用している。即ち、プログラム記憶領域42に記憶されているプログラム44,46に従って制御部16が処理を実行する。しかしながら、PDLデータ変換処理部14の制御部16とは別の専用の制御部を印刷部40に設けてもよい。   The printing unit 40 includes a program storage area 42, a buffer 48, a band memory 50, a printing mechanism 52, and the like. In this embodiment, the control unit 16 of the PDL data conversion processing unit 14 also serves as the control unit of the printing unit 40. That is, the control unit 16 executes processing according to the programs 44 and 46 stored in the program storage area 42. However, a dedicated control unit different from the control unit 16 of the PDL data conversion processing unit 14 may be provided in the printing unit 40.

プログラム記憶領域42は、二値BMPデータ作成プログラム44と、その他のプログラム46とを記憶している。二値BMPデータ作成プログラム44は、PDLデータ変換処理部14で作成された多値BMPデータから印刷用の低階調(本実施例では「0」と「1」の二階調)のビットマップデータを作成するためのプログラムである。なお、以下では、印刷用のビットマップデータのことを「二値BMPデータ」と呼ぶことがある。プログラム46は、印刷処理において必要な他の処理を実行するためのプログラム(例えば印刷機構52を制御するためのプログラム)である。   The program storage area 42 stores a binary BMP data creation program 44 and other programs 46. The binary BMP data creation program 44 uses the multi-value BMP data created by the PDL data conversion processing unit 14 to print low gradation (in this embodiment, two gradations of “0” and “1”) bitmap data. It is a program for creating. In the following, bitmap data for printing may be referred to as “binary BMP data”. The program 46 is a program for executing other processes necessary for the printing process (for example, a program for controlling the printing mechanism 52).

バッファ48は、PDLデータ変換処理部14から送信された多値BMPデータを一時的に記憶するためのバッファである。バンドメモリ50は、少なくとも1バンド分の二値BMPデータを記憶するためのメモリである。「バンド」について簡単に説明しておく。PC60から印刷するように指示された全てのPDLデータに対応する多値BMPデータを作成し、その後に全ての多値BMPデータから全ての二値BMPデータを作成し、その後に印刷を開始するという手法が考えられる。しかしながら、この場合、全てのPDLデータに対応する多値BMPデータ及び二値BMPデータを記憶するための大容量のメモリが必要になる。本実施例のプリンタ10は、多値BMPデータ及び二値BMPデータを記憶するためのメモリ容量を圧縮するために、「バンド」という概念を用いて多値BMPデータ及び二値BMPデータを少しずつ作成して順に印刷する手法を採用する。本実施例では、1つのバンドのバンド幅は、例えば、インクジェットヘッドが1回の走査によって印刷することが可能である範囲(1ページより少ない範囲)に基づいて設定される。   The buffer 48 is a buffer for temporarily storing the multivalued BMP data transmitted from the PDL data conversion processing unit 14. The band memory 50 is a memory for storing binary BMP data for at least one band. A brief explanation of “bands” will be given. Multi-value BMP data corresponding to all PDL data instructed to be printed from the PC 60 is created, then all binary BMP data is created from all the multi-value BMP data, and then printing is started. A method can be considered. However, in this case, a large-capacity memory is required to store multilevel BMP data and binary BMP data corresponding to all PDL data. In order to compress the memory capacity for storing the multilevel BMP data and the binary BMP data, the printer 10 of the present embodiment uses the concept of “band” to gradually convert the multilevel BMP data and the binary BMP data. A method of creating and printing in order is adopted. In this embodiment, the bandwidth of one band is set based on, for example, a range in which the inkjet head can print by one scan (a range less than one page).

詳しくは後述するが、本実施例では、PDLデータ変換処理部14は、1ページ分のPDLデータから1ページ分の中間言語データを作成する。PDLデータ変換処理部14は、1ページ分の中間言語データからページの先頭の1バンド分の多値BMPデータを作成する。1バンド分の多値BMPデータは、PDLデータ変換処理部14から印刷部40に送信される。PDLデータ変換処理部14は、送信された多値BMPデータを削除する。PDLデータ変換処理部14は、これらの処理をバンド単位で繰り返す。例えば、PDLデータ変換処理部14は、1バンド分の多値BMPデータを作成し、それを全て送信し終えてから多値BMPデータを削除し、その後に次のバンドの多値BMPデータを作成してもよい。この場合、PDLデータ変換処理部14は、1バンド分のメモリサイズを共通メモリ28に確保すれば足りる。しかしながら、本実施例では、PDLデータ変換処理部14は、1バンド分の多値BMPデータを印刷部40に送信している間に、次のバンドの多値BMPデータを作成することを開始する。これにより、多値BMPデータを高速で作成して印刷部40に提供することを実現している。この処理を実行する場合、PDLデータ変換処理部14は、少なくとも2バンド分の多値BMPデータを記憶するためのメモリサイズを共通メモリ28に確保する必要がある。1バンド分の多値BMPデータを削除する前に、次のバンドの多値BMPデータを作成することを開始するからである。   As will be described in detail later, in this embodiment, the PDL data conversion processing unit 14 creates one page of intermediate language data from one page of PDL data. The PDL data conversion processing unit 14 creates multi-value BMP data for the first band of the page from the intermediate language data for one page. Multi-value BMP data for one band is transmitted from the PDL data conversion processing unit 14 to the printing unit 40. The PDL data conversion processing unit 14 deletes the transmitted multi-value BMP data. The PDL data conversion processing unit 14 repeats these processes for each band. For example, the PDL data conversion processing unit 14 creates multi-value BMP data for one band, deletes the multi-value BMP data after completing transmission, and then creates multi-value BMP data for the next band. May be. In this case, it is sufficient for the PDL data conversion processing unit 14 to secure a memory size for one band in the common memory 28. However, in this embodiment, the PDL data conversion processing unit 14 starts to generate the multi-value BMP data of the next band while transmitting the multi-value BMP data for one band to the printing unit 40. . As a result, multi-value BMP data can be created at high speed and provided to the printing unit 40. When executing this processing, the PDL data conversion processing unit 14 needs to secure a memory size in the common memory 28 for storing multi-level BMP data for at least two bands. This is because, before deleting multi-value BMP data for one band, it starts to create multi-value BMP data for the next band.

印刷部40は、PDLデータ変換処理部14から送信された1バンド分の多値BMPデータを受信する。印刷部40は、1バンド分の多値BMPデータから1バンド分の二値BMPデータを作成する。印刷部40は、1バンド分の二値BMPデータに従って印刷する。印刷部40は、印刷が終了した二値BMPデータを削除する。例えば、印刷部40は、1バンド分の二値BMPデータを作成し、それを全て印刷し終えてから二値BMPデータを削除し、その後に次のバンドの二値BMPデータを作成してもよい。この場合、バンドメモリ50は、1バンド分のメモリサイズがあれば足りる。しかしながら、本実施例では、印刷部40は、1バンド分の二値BMPデータに従って印刷している間に、次のバンドの二値BMPデータを作成することを開始する。これにより、高速で印刷することを実現している。この処理を実行する場合、バンドメモリ50は、少なくとも2バンド分のBMPデータを記憶するためのメモリサイズが必要である。1バンド分の二値BMPデータを削除する前に、次のバンドの二値BMPデータを作成することを開始するからである。   The printing unit 40 receives the multi-value BMP data for one band transmitted from the PDL data conversion processing unit 14. The printing unit 40 creates binary BMP data for one band from multi-value BMP data for one band. The printing unit 40 performs printing according to binary BMP data for one band. The printing unit 40 deletes the binary BMP data that has been printed. For example, the printing unit 40 creates binary BMP data for one band, deletes the binary BMP data after printing it all, and then creates binary BMP data for the next band. Good. In this case, it is sufficient for the band memory 50 to have a memory size for one band. However, in the present embodiment, the printing unit 40 starts creating binary BMP data for the next band while printing is performed according to the binary BMP data for one band. This realizes printing at high speed. When this process is executed, the band memory 50 needs to have a memory size for storing BMP data for at least two bands. This is because, before deleting the binary BMP data for one band, it starts to create binary BMP data for the next band.

印刷機構52は、印刷媒体を搬送するための機構と、印刷媒体に印刷するための機構(例えばインクジェットタイプやレーザタイプの印刷機構)とを有する。制御部16は、プログラム記憶領域42に記憶されているプログラム46とバンドメモリ50の記憶内容に従って、印刷機構52の駆動制御を実行する。   The printing mechanism 52 includes a mechanism for transporting the printing medium and a mechanism for printing on the printing medium (for example, an ink jet type or laser type printing mechanism). The control unit 16 performs drive control of the printing mechanism 52 according to the program 46 stored in the program storage area 42 and the stored contents of the band memory 50.

(PDLデータ変換処理)
続いて、制御部16が実行するPDLデータ変換処理の内容について説明する。制御部16は、プログラム20,22,24,26に従ってPDLデータ変換処理を実行する。図2〜図4は、PDLデータ変換処理のフローチャートを示す。PDLデータ変換処理は、PC60からの印刷指示及びPDLデータがネットワークインターフェイス12に入力されたことをトリガとして開始される。ネットワークインターフェイス12に入力されたPDLデータは、インターフェイス用バッファ13に格納される。インターフェイス用バッファ13は、PC60からの全てのPDLデータを同時に記憶することができる程度の大きなメモリサイズを有している必要はなく、少ないメモリサイズを有している。制御部16は、インターフェイス用バッファ13に格納されたPDLデータに対して後述の処理を実行するとPDLデータを削除し、その後に次のPDLデータをPC60からダウンロードすることを繰り返す。
(PDL data conversion process)
Next, the contents of the PDL data conversion process executed by the control unit 16 will be described. The control unit 16 executes PDL data conversion processing according to the programs 20, 22, 24, and 26. 2 to 4 are flowcharts of the PDL data conversion process. The PDL data conversion process is triggered by a print instruction from the PC 60 and the input of PDL data to the network interface 12. The PDL data input to the network interface 12 is stored in the interface buffer 13. The interface buffer 13 does not need to have a large memory size that can store all PDL data from the PC 60 at the same time, and has a small memory size. The control unit 16 repeatedly deletes the PDL data when the processing described later is executed on the PDL data stored in the interface buffer 13, and then repeatedly downloads the next PDL data from the PC 60.

まず、制御部16は、共通メモリ28の中の使用可能なメモリサイズを特定する(S10)。次いで、制御部16は、多値BMPデータを作成するために必要なメモリサイズ(以下では「多値BMPデータ用メモリサイズ」と呼ぶことがある)を特定する(S12)。本実施例のS12の処理では、制御部16は、2バンド分の多値BMPデータを作成するために必要なメモリサイズを特定する。しかしながら、制御部16は、2バンド分以上の多値BMPデータを作成するために必要なメモリサイズを特定してもよい。なお、S10で使用可能なメモリサイズを特定するとともにS12で多値BMPデータ用メモリサイズを特定するということは、「PDLデータから中間言語を作成するための処理で使用可能なメモリサイズ(以下では「中間言語データ用メモリサイズ」と呼ぶことがある)を特定する」と言うこともできる。   First, the control unit 16 specifies a usable memory size in the common memory 28 (S10). Next, the control unit 16 specifies a memory size (hereinafter, sometimes referred to as “multi-value BMP data memory size”) necessary for creating the multi-value BMP data (S12). In the process of S12 of the present embodiment, the control unit 16 specifies a memory size necessary for creating multi-level BMP data for two bands. However, the control unit 16 may specify a memory size necessary for creating multi-level BMP data for two bands or more. Note that specifying the memory size that can be used in S10 and specifying the memory size for multi-level BMP data in S12 means that “the memory size that can be used in the process for creating an intermediate language from PDL data (hereinafter, It can also be referred to as “specifying“ memory size for intermediate language data ”).

次いで、制御部16は、処理対象ページPNとして「1」を特定する(S14)。即ち、1ページ目のPDLデータに基づいて以下の各処理を実行する。制御部16は、処理対象ページ(現段階では1ページ目)のPDLデータがインターフェイス用バッファ13に存在するのか否かを判断する(S16)。ここでNOの場合、図4のS50に進む。一方において、ここでYESの場合、S18に進む。   Next, the control unit 16 specifies “1” as the processing target page PN (S14). That is, the following processes are executed based on the PDL data of the first page. The control unit 16 determines whether or not the PDL data of the processing target page (the first page at the present stage) exists in the interface buffer 13 (S16). If NO here, the process proceeds to S50 in FIG. On the other hand, if YES here, the process proceeds to S18.

実際のPDLデータは、複数のコマンド(ベクタデータ)によって構成される。1ページ分のPDLデータの中にも複数のコマンドが含まれている。図5は、PDLデータ100の構成を簡単に示す。PDLデータ100は、複数ページ分のデータを含んでいる。第1ページは、複数のコマンドCP1,CP2,CP3、・・・CPnによって構成されている(図5においてはCP1〜CP3のみを記載している)。即ち、第1ページの先頭のコマンドがCP1であり、2番目のコマンドがCP2であり、3番目のコマンドがCP3である。同様に、第2ページ以降も、複数のコマンド(図示省略)によって構成されている。以下の各処理は、1つのコマンドを単位として実行される。即ち、図5の例の場合、コマンドCP1についてS18以降の処理が実行され、次いでコマンドCP2についてS18以降の処理が実行される。第1ページに含まれる最後のコマンドCP3についてS18以降の処理が実行されるまで、このルーチンが繰り返される。   Actual PDL data is composed of a plurality of commands (vector data). A plurality of commands are also included in one page of PDL data. FIG. 5 simply shows the structure of the PDL data 100. The PDL data 100 includes data for a plurality of pages. The first page includes a plurality of commands CP1, CP2, CP3,... CPn (only CP1 to CP3 are shown in FIG. 5). That is, the first command on the first page is CP1, the second command is CP2, and the third command is CP3. Similarly, the second and subsequent pages are also composed of a plurality of commands (not shown). The following processes are executed in units of one command. That is, in the case of the example of FIG. 5, the process after S18 is executed for the command CP1, and then the process after S18 is executed for the command CP2. This routine is repeated until the processes after S18 are executed for the last command CP3 included in the first page.

S18では、制御部16は、インターフェイス用バッファ13に格納されているPDLデータの1つのコマンド(現段階ではコマンドCP1)のデータサイズに基づいて、そのコマンドを中間言語に変換したら多値BMPデータ用のメモリサイズを圧迫してしまうのか否かを判断する。具体的には、以下の処理を行なって判断する。   In S18, the control unit 16 converts the command into an intermediate language based on the data size of one command (command CP1 at this stage) of the PDL data stored in the interface buffer 13, and for multi-value BMP data. It is determined whether or not the memory size of the memory card is compressed. Specifically, the following processing is performed for determination.

まず、制御部16は、PDLデータのコマンドのデータサイズを特定する。制御部16は、特定されたデータサイズに基づいて、コマンドから作成されるべき中間言語データのデータサイズを特定する。本実施例では、制御部16は、コマンドのデータサイズと、コマンドから作成されるべき中間言語データのデータサイズとが等しくなるものと推定して、中間言語データのデータサイズを特定する。例えば、コマンドCP1のデータサイズが「XXバイト」である場合、制御部16は、中間言語データのデータサイズとして「XXバイト」を特定する。なお、制御部16は、上記と異なる手法を利用して、PDLデータのコマンドから作成されるべき中間言語データのデータサイズを特定してもよい。例えば、プリンタ10は、PDLデータの各コマンドについて、当該コマンドから作成されるべき中間言語データのデータサイズを記憶していてもよい。この場合、制御部16は、上記の記憶内容を読み込むことによって中間言語データのデータサイズを特定してもよい。また、例えば、プリンタ10は、PDLデータのコマンドのデータサイズに乗算するべき比率を記憶しておいてもよい。この場合、制御部16は、PDLデータのコマンドのデータサイズに上記の比率を乗算することによって、中間言語データのデータサイズを特定してもよい。   First, the control unit 16 specifies the data size of the PDL data command. The control unit 16 specifies the data size of the intermediate language data to be created from the command based on the specified data size. In this embodiment, the control unit 16 presumes that the data size of the command is equal to the data size of the intermediate language data to be created from the command, and specifies the data size of the intermediate language data. For example, when the data size of the command CP1 is “XX bytes”, the control unit 16 specifies “XX bytes” as the data size of the intermediate language data. The control unit 16 may specify the data size of the intermediate language data to be created from the PDL data command using a method different from the above. For example, for each command of PDL data, the printer 10 may store the data size of intermediate language data to be created from the command. In this case, the control unit 16 may specify the data size of the intermediate language data by reading the stored content. Further, for example, the printer 10 may store a ratio to be multiplied by the data size of the PDL data command. In this case, the control unit 16 may specify the data size of the intermediate language data by multiplying the data size of the command of the PDL data by the above ratio.

次いで、制御部16は、上記のようにして特定されたデータサイズと、共通メモリ28内に存在する中間言語データのデータサイズとの和(以下では「合計データサイズ」と呼ぶ)とを算出する。例えば、図5のPDLデータ100のコマンドCP1について本処理が実行されている場合、共通メモリ28内に中間言語データは存在しない。この場合、コマンドCP1から作成されるべき中間言語データのデータサイズが上記の合計データサイズになる。続いて、制御部16は、上記の合計データサイズが中間言語データ用メモリサイズ(S10で特定された使用可能なメモリサイズからS12で特定された多値BMP用データサイズを減算した値)を超えるのか否かを判断する。これにより、S18の処理が実行される。なお、S18の処理を実行するための手法は、上記の手法に限られない。他の手法を採用することができる。他の手法については、後で述べる。   Next, the control unit 16 calculates the sum (hereinafter referred to as “total data size”) of the data size specified as described above and the data size of the intermediate language data existing in the common memory 28. . For example, when this process is executed for the command CP1 of the PDL data 100 in FIG. 5, there is no intermediate language data in the common memory 28. In this case, the data size of the intermediate language data to be created from the command CP1 becomes the above total data size. Subsequently, the control unit 16 exceeds the total data size above the intermediate language data memory size (a value obtained by subtracting the multi-value BMP data size specified in S12 from the usable memory size specified in S10). It is determined whether or not. Thereby, the process of S18 is performed. Note that the method for executing the processing of S18 is not limited to the above method. Other techniques can be employed. Other methods will be described later.

図6は、共通メモリ28を概略的に示す。符号120は、S10で特定された使用可能なメモリサイズを示す。符号130は、S12で特定された多値BMPデータ用のメモリサイズを示す。符号140は、中間言語データ用メモリサイズを示す。上記のS18の処理では、PDLデータ100のコマンド(現時点ではCP1)を中間言語データに変換したら中間言語データの合計データサイズが中間言語データ用のメモリサイズ140を超えてしまうのか否かを判断する。ここでNOと判断された場合、S20に進む。   FIG. 6 schematically shows the common memory 28. Reference numeral 120 indicates the usable memory size specified in S10. Reference numeral 130 indicates the memory size for the multi-level BMP data specified in S12. Reference numeral 140 denotes a memory size for intermediate language data. In the processing of S18 described above, it is determined whether or not the total data size of the intermediate language data exceeds the memory size 140 for the intermediate language data when the command of the PDL data 100 (CP1 at present) is converted into the intermediate language data. . If NO is determined here, the process proceeds to S20.

S20では、制御部16は、PDLデータ100のコマンドCP1から作成されるべき中間言語データのデータサイズを共通メモリ28内に確保する。次いで、制御部16は、中間言語データ作成プログラム20に従って、PDLデータ100のコマンドCP1を中間言語データに変換する(S22)。制御部16は、この中間言語データを共通メモリ28に書き込む。図7は、コマンドCP1から作成された中間言語データCM1が共通メモリ28に格納されている様子を示す。   In S <b> 20, the control unit 16 secures the data size of the intermediate language data to be created from the command CP <b> 1 of the PDL data 100 in the common memory 28. Next, the control unit 16 converts the command CP1 of the PDL data 100 into intermediate language data according to the intermediate language data creation program 20 (S22). The control unit 16 writes the intermediate language data in the common memory 28. FIG. 7 shows a state in which the intermediate language data CM1 created from the command CP1 is stored in the common memory 28.

続いて、制御部16は、S16に戻って次のコマンドCP2を読み込む。次いで、制御部16は、コマンドCP2を中間言語に変換したら多値BMPデータ用のメモリサイズ130を圧迫してしまうのか否かを判断する(S18)。図7に示すように、コマンドCP2から作成されるべき中間言語データCM2を共通メモリ28に書き込むと、合計データサイズが中間言語データ用メモリサイズ140を超えてしまう。この場合、制御部16は、S18でYESと判断し、図3のS30に進む。   Subsequently, the control unit 16 returns to S16 and reads the next command CP2. Next, the control unit 16 determines whether or not the memory size 130 for multi-level BMP data is compressed when the command CP2 is converted into an intermediate language (S18). As shown in FIG. 7, when the intermediate language data CM2 to be created from the command CP2 is written in the common memory 28, the total data size exceeds the intermediate language data memory size 140. In this case, the control unit 16 determines YES in S18, and proceeds to S30 in FIG.

S30では、制御部16は、共通メモリ28内に圧縮された多値BMPデータ(以下では「圧縮多値BMPデータ」と呼ぶことがある)が存在するのか否かを判断する。コマンドCP2を処理する時点では、圧縮多値BMPデータは存在しない。この場合、制御部16は、S30でNOと判断し、S32をスキップし、S34に進む。S34では、制御部16は、多値BMPデータ作成プログラム22に従って、中間言語データCM1を多値BMPデータに変換する。制御部16は、この多値BMPデータを共通メモリ28に書き込む。図8は、中間言語データCM1から作成された多値BMPデータCB1が共通メモリ28に格納されている様子を示す。   In S <b> 30, the control unit 16 determines whether there is compressed multi-value BMP data (hereinafter, sometimes referred to as “compressed multi-value BMP data”) in the common memory 28. At the time when the command CP2 is processed, there is no compressed multilevel BMP data. In this case, the control unit 16 determines NO in S30, skips S32, and proceeds to S34. In S34, the control unit 16 converts the intermediate language data CM1 into multi-value BMP data according to the multi-value BMP data creation program 22. The control unit 16 writes the multi-value BMP data in the common memory 28. FIG. 8 shows a state in which the multi-value BMP data CB1 created from the intermediate language data CM1 is stored in the common memory 28.

次いで、制御部16は、S34で作成された多値BMPデータCB1を圧縮することによって、圧縮多値BMPデータCB1’を作成する(S36)。図9は、圧縮多値BMPデータCB1’が共通メモリ28に格納されている様子を示す。続いて、制御部16は、中間言語データCM1を共通メモリ28から削除する(S38)。この場合、図9に示されるように、中間言語データCM1を格納していた部分が開放される。S38を終えると、制御部16は、図2のS20及びS22を実行する。これにより、コマンドCP2から中間言語データCM2に変換され、中間言語データCM2が共通メモリ28に書き込まれる。図10は、中間言語データCM2が共通メモリ28に格納されている様子を示す。   Next, the control unit 16 creates compressed multi-value BMP data CB1 'by compressing the multi-value BMP data CB1 created in S34 (S36). FIG. 9 shows a state in which the compressed multilevel BMP data CB 1 ′ is stored in the common memory 28. Subsequently, the control unit 16 deletes the intermediate language data CM1 from the common memory 28 (S38). In this case, as shown in FIG. 9, the portion storing the intermediate language data CM1 is released. When S38 ends, the control unit 16 executes S20 and S22 of FIG. As a result, the command CP2 is converted into the intermediate language data CM2, and the intermediate language data CM2 is written into the common memory 28. FIG. 10 shows a state in which the intermediate language data CM2 is stored in the common memory 28.

続いて、制御部16は、S16に戻って次のコマンドCP3を読み込む。次いで、制御部16は、コマンドCP3を中間言語に変換したら多値BMPデータ用のメモリサイズ130を圧迫してしまうのか否かを判断する(S18)。図10に示すように、コマンドCP3から作成されるべき中間言語データCM3を共通メモリ28に書き込むと、合計データサイズ(CM2とCM3の合計データサイズ)が中間言語データ用メモリサイズ140を超えてしまう。この場合、制御部16は、S18でYESと判断し、図3のS30に進む。なお、S18の判断処理は、圧縮多値BMPデータCB1’を考慮して実行してもよい。即ち、制御部16は、CM2とCM3の合計データサイズと圧縮多値BMPデータCB1’のデータサイズとの和が、中間言語データ用メモリサイズ140を超えるのか否かを判断してもよい。即ち、この場合、共通メモリ28内のフリーのメモリサイズが多値BMPデータ用メモリサイズ130以下になるのか否かを判断することに等しい。   Subsequently, the control unit 16 returns to S16 and reads the next command CP3. Next, the control unit 16 determines whether or not the memory size 130 for multi-level BMP data is compressed when the command CP3 is converted into an intermediate language (S18). As shown in FIG. 10, when the intermediate language data CM3 to be created from the command CP3 is written to the common memory 28, the total data size (the total data size of CM2 and CM3) exceeds the intermediate language data memory size 140. . In this case, the control unit 16 determines YES in S18, and proceeds to S30 in FIG. Note that the determination process in S18 may be executed in consideration of the compressed multi-level BMP data CB1 '. That is, the control unit 16 may determine whether or not the sum of the total data size of CM2 and CM3 and the data size of the compressed multilevel BMP data CB1 'exceeds the intermediate language data memory size 140. That is, in this case, this is equivalent to determining whether or not the free memory size in the common memory 28 is equal to or smaller than the memory size 130 for multi-value BMP data.

圧縮多値BMPデータCB1’が存在するために、制御部16は、S30でYESと判断する。この場合、制御部16は、圧縮多値BMPデータCB1’を伸張することによって、多値BMPデータCB1を作成する(S32)。図11は、多値BMPデータCB1が共通メモリ28に格納されている様子を示す。次いで、制御部16は、中間言語データCM2を多値BMPデータCB2に変換する(S34)。なお、図11に示されるように、本実施例では、多値BMPデータCB2を作成すると、多値BMPデータの合計データサイズ(CB1とCB2の合計データサイズ)が多値BMPデータ用メモリサイズ130を超えてしまう。しかしながら、中間言語データ用メモリサイズ140が余っているために、その部分も利用しながら多値BMPデータを作成する。即ち、この時点でメモリフルのエラーにならない。S34を実行することによって、多値BMPデータCB1と多値BMPデータCB2とから新たな多値BMPデータCB1,CB2が作成される。   Since the compressed multilevel BMP data CB1 'exists, the control unit 16 determines YES in S30. In this case, the control unit 16 creates the multi-value BMP data CB1 by expanding the compressed multi-value BMP data CB1 '(S32). FIG. 11 shows a state where the multi-value BMP data CB1 is stored in the common memory 28. Next, the control unit 16 converts the intermediate language data CM2 into multi-value BMP data CB2 (S34). As shown in FIG. 11, in this embodiment, when the multi-value BMP data CB2 is created, the total data size of the multi-value BMP data (the total data size of CB1 and CB2) is the memory size 130 for the multi-value BMP data. Will be exceeded. However, since the memory size 140 for intermediate language data is left, multi-value BMP data is created while using that portion. That is, no memory full error occurs at this point. By executing S34, new multilevel BMP data CB1 and CB2 are created from the multilevel BMP data CB1 and the multilevel BMP data CB2.

次いで、制御部16は、S34で作成された多値BMPデータCB1,CB2を圧縮することによって、圧縮多値BMPデータCB1’+CB2’を作成する(S36)。図12は、圧縮多値BMPデータCB1’+CB2’が共通メモリ28に格納されている様子を示す。次いで、制御部16は、中間言語データCM2を共通メモリ28から削除する(S38)。S38を終えると、制御部16は、図2のS20及びS22を実行する。これにより、コマンドCP3から中間言語データCM3に変換され、中間言語データCM3が共通メモリ28に書き込まれる。図12は、中間言語データCM3が共通メモリ28に格納されている様子を示す。   Next, the control unit 16 creates compressed multi-value BMP data CB1 '+ CB2' by compressing the multi-value BMP data CB1 and CB2 created in S34 (S36). FIG. 12 shows how the compressed multilevel BMP data CB 1 ′ + CB 2 ′ is stored in the common memory 28. Next, the control unit 16 deletes the intermediate language data CM2 from the common memory 28 (S38). When S38 ends, the control unit 16 executes S20 and S22 of FIG. As a result, the command CP3 is converted into the intermediate language data CM3, and the intermediate language data CM3 is written into the common memory 28. FIG. 12 shows a state in which the intermediate language data CM3 is stored in the common memory 28.

図5のPDLデータ100のコマンドCP1,CP2,CP3についてS18以降の処理が実行されると、制御部16は、S16でNOと判断する。この場合、図4のS50に進む。S50では、制御部16は、処理対象バンドBNとして「1」を特定する(S50)。制御部16は、処理対象バンド(現時点では「1」)に含まれる圧縮多値BMPデータが共通メモリ28に存在するのか否かを判断する(S52)。例えば、図12に示される圧縮多値BMPデータCB1’+CB2’が処理対象バンドに含まれる場合、制御部16は、S52でYESと判断し、S54に進む。S54では、制御部16は、圧縮多値BMPデータCB1’+CB2’を伸張することによって、多値BMPデータCB1+CB2を作成する。多値BMPデータCB1+CB2は、共通メモリ28に書き込まれる。   When the processes after S18 are executed for the commands CP1, CP2, and CP3 of the PDL data 100 in FIG. 5, the control unit 16 determines NO in S16. In this case, the process proceeds to S50 of FIG. In S50, the control unit 16 specifies “1” as the processing target band BN (S50). The control unit 16 determines whether or not the compressed multilevel BMP data included in the processing target band (currently “1”) exists in the common memory 28 (S52). For example, when the compressed multilevel BMP data CB1 '+ CB2' shown in FIG. 12 is included in the processing target band, the control unit 16 determines YES in S52, and proceeds to S54. In S54, the control unit 16 creates the multi-value BMP data CB1 + CB2 by expanding the compressed multi-value BMP data CB1 '+ CB2'. The multi-value BMP data CB1 + CB2 is written in the common memory 28.

次いで、制御部16は、処理対象バンド(現時点では「1」)に含まれる中間言語データが共通メモリ28に存在するのか否かを判断する(S56)。例えば、図12に示される中間言語データCM3が処理対象バンドに含まれる場合、制御部16は、S56でYESと判断し、S58に進む。S58では、制御部16は、中間言語データCM3を多値BMPデータCB3に変換する。多値BMPデータCB3は、共通メモリ28に書き込まれる。これにより、上記の多値BMPデータCB1+CB2と多値BMPデータCB3とから新たな多値BMPデータが作成される。制御部16は、多値BMPデータに変換された中間言語データCM3を共通メモリ28から削除する(S60)。   Next, the control unit 16 determines whether or not the intermediate language data included in the processing target band (currently “1”) exists in the common memory 28 (S56). For example, when the intermediate language data CM3 shown in FIG. 12 is included in the processing target band, the control unit 16 determines YES in S56, and proceeds to S58. In S58, the control unit 16 converts the intermediate language data CM3 into multi-value BMP data CB3. The multi-value BMP data CB3 is written in the common memory 28. As a result, new multi-value BMP data is created from the multi-value BMP data CB1 + CB2 and the multi-value BMP data CB3. The control unit 16 deletes the intermediate language data CM3 converted into the multi-value BMP data from the common memory 28 (S60).

続いて、制御部16は、処理対象バンド(現時点では「1」)の多値BMPデータを印刷部40に送信する(S62)。これにより、印刷部40(制御部16)は、処理対象バンドの多値BMPデータから二値BMPデータを作成し、その二値BMPデータに従って印刷を開始する。制御部16は、S62で多値BMPデータの送信を開始するとすぐにS64以降の処理を実行する。まず、制御部16は、処理対象バンドBNをインクリメントする(S64)。現時点では、処理対象バンドBNが「2」になる。次いで、制御部16は、処理対象バンドBNが1ページの最終バンドを超えたのか否かを判断する(S66)。ここでNOの場合、制御部16は、S52以降の処理を繰り返す。なお、制御部16は、S62で1バンド分の多値BMPデータが送信された後に、その多値BMPデータを共通メモリ28から削除する。   Subsequently, the control unit 16 transmits the multi-value BMP data of the processing target band (currently “1”) to the printing unit 40 (S62). Thereby, the printing unit 40 (control unit 16) creates binary BMP data from the multi-value BMP data of the processing target band, and starts printing according to the binary BMP data. As soon as the transmission of the multi-value BMP data is started in S62, the control unit 16 executes the processes after S64. First, the control unit 16 increments the processing target band BN (S64). At this time, the processing target band BN becomes “2”. Next, the control unit 16 determines whether or not the processing target band BN exceeds the final band of one page (S66). Here, in the case of NO, the control unit 16 repeats the processes after S52. The control unit 16 deletes the multilevel BMP data from the common memory 28 after the multilevel BMP data for one band is transmitted in S62.

一方において、S66でYESの場合、即ち、1ページ分の全てのバンドについて処理を終えた場合、制御部16は、処理対象ページPN(現時点では「1」)の次のページのPDLデータがインターフェイス用バッファ13に存在するのか否かを判断する(S68)。例えば、図5のPDL100の場合、第2ページ以降が存在する。この場合、制御部16は、S68でYESと判断し、処理対象ページPNをインクリメントする(S70)。現時点では、処理対象ページPNが「2」になる。次いで、制御部16は、S18に戻って、2ページ目以降について同様に処理を実行する。   On the other hand, in the case of YES in S66, that is, when the processing for all the bands for one page is completed, the control unit 16 indicates that the PDL data of the next page of the processing target page PN (currently “1”) is the interface. It is determined whether or not it exists in the buffer 13 (S68). For example, in the case of the PDL 100 in FIG. 5, there are the second and subsequent pages. In this case, the control unit 16 determines YES in S68, and increments the processing target page PN (S70). At this time, the processing target page PN is “2”. Next, the control unit 16 returns to S18 and executes the same process for the second and subsequent pages.

上記のプリンタ10は、中間言語データ作成プログラム20と多値BMPデータ作成プログラム22のそれぞれの処理のメモリ管理を統括的に実行する。メモリを効率的に利用しながら二段階に亘ってデータを変換することができる。仮に、メモリ管理を個別に行なうと、各プログラム20,22の処理のためにメモリを分配する必要がある。この場合、例えば、図11に示すように、中間言語データ用メモリサイズ140ではメモリが余っているにもかかわらず、多値BMPデータ用メモリサイズ130がフルになると、その時点でエラーになってしまう。これに対し、本実施例のプリンタ10のように各プログラム20,22の処理のためのメモリ管理を統括的に実行すると、各プログラム20,22の処理で共通メモリ28を共用することができる。このために、メモリの一部が余っているにもかかわらずメモリフルのエラーが生じてしまうという事象が発生することを避けることができる。本実施例によると、二段階に亘ってデータを変換する処理においてメモリフルのエラーの発生を抑制することができる。   The printer 10 performs overall memory management of the intermediate language data creation program 20 and the multi-value BMP data creation program 22. Data can be converted in two stages while efficiently using the memory. If memory management is performed individually, it is necessary to distribute the memory for the processing of the programs 20 and 22. In this case, for example, as shown in FIG. 11, when the memory size for the intermediate language data 140 has a surplus memory and the memory size for the multi-level BMP data becomes full, an error occurs at that time. End up. On the other hand, when the memory management for the processing of the programs 20 and 22 is executed centrally as in the printer 10 of the present embodiment, the common memory 28 can be shared by the processing of the programs 20 and 22. For this reason, it is possible to avoid the occurrence of an event that a memory full error occurs even though a part of the memory is left. According to the present embodiment, it is possible to suppress the occurrence of a memory full error in the process of converting data in two stages.

以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。   Specific examples of the present invention have been described in detail above, but these are merely examples and do not limit the scope of the claims. The technology described in the claims includes various modifications and changes of the specific examples illustrated above. The modifications of the above embodiment are listed below.

(1)上述したように、図2のS18の判断処理の手法は様々である。以下の各手法を採用してもよい。例えば、図2のS10において使用可能なメモリサイズとして10000キロバイトが特定され、図2のS12において多値BMPデータ用メモリサイズとして2000キロバイトが特定されたものとする(即ち中間言語データ用及びその他で使用可能なメモリサイズは8000キロバイトである)。この例に基づいて、各手法について説明する。 (1) As described above, there are various methods for the determination process in S18 of FIG. The following methods may be employed. For example, 10000 kilobytes is specified as the usable memory size in S10 of FIG. 2, and 2000 kilobytes is specified as the memory size for multi-level BMP data in S12 of FIG. 2 (that is, for intermediate language data and others). The available memory size is 8000 kilobytes). Based on this example, each method will be described.

(1−1)上記の(1)の例において、7000キロバイトの中間言語データのみが共通メモリ28に存在し、PDLデータの次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが9000キロバイトになる場合、制御部16は、S18でYESと判断してもよい。即ち、この例の場合、中間言語データの合計データサイズ(9000キロバイト)と中間言語データ用メモリサイズ(8000キロバイト)とを比較することによって、S18の処理を実行することになる。これが上記の実施例の手法である。 (1-1) In the above example (1), only 7000 kilobytes of intermediate language data exists in the common memory 28, and when intermediate language data is created from the next command of PDL data, the total data size of the intermediate language data When 9000 kilobytes is reached, the control unit 16 may determine YES in S18. That is, in this example, the process of S18 is executed by comparing the total data size of the intermediate language data (9000 kilobytes) with the memory size for the intermediate language data (8000 kilobytes). This is the method of the above embodiment.

(1−2)上記の(1)の例において、6000キロバイトの中間言語データと1000キロバイトの圧縮多値BMPデータとが共通メモリ28に存在し、次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが7500キロバイトになる場合、制御部16は、S18でNOと判断してもよい。中間言語データの合計データサイズが7500キロバイトであり、中間言語データ用メモリサイズ(8000キロバイト)を超えないからである。この例の場合、中間言語データの合計データサイズ(7500キロバイト)と中間言語データ用メモリサイズ(8000キロバイト)とを比較することによって、S18の処理を実行することになる。これも上記の実施例の手法である。 (1-2) In the example of (1) above, 6000 kilobytes of intermediate language data and 1000 kilobytes of compressed multi-level BMP data exist in the common memory 28, and intermediate language data is created from the next command. When the total data size of the language data is 7500 kilobytes, the control unit 16 may determine NO in S18. This is because the total data size of the intermediate language data is 7500 kilobytes and does not exceed the intermediate language data memory size (8000 kilobytes). In the case of this example, the process of S18 is executed by comparing the total data size of intermediate language data (7500 kilobytes) with the memory size for intermediate language data (8000 kilobytes). This is also the method of the above embodiment.

(1−3)一方において、上記の(1−2)の例において、制御部16は、S18でYESと判断してもよい。中間言語データの合計データサイズ(7500キロバイト)と圧縮多値BMPデータのデータサイズ(1000キロバイト)との和が8500キロバイトであり、中間言語データ用メモリサイズ(8000キロバイト)を超えるからである。即ち、この例の場合、中間言語データの合計データサイズ(7500キロバイト)と、中間言語データ用メモリサイズ(8000キロバイト)から圧縮多値BMPデータのデータサイズ(1000キロバイト)が減算された値(7000キロ)とを比較することによって、S18の処理を実行することになる。 (1-3) On the other hand, in the example of (1-2) above, the control unit 16 may determine YES in S18. This is because the sum of the total data size of intermediate language data (7500 kilobytes) and the data size of compressed multilevel BMP data (1000 kilobytes) is 8500 kilobytes, which exceeds the memory size for intermediate language data (8000 kilobytes). In other words, in this example, the total data size of intermediate language data (7500 kilobytes) and the value obtained by subtracting the data size of compressed multilevel BMP data (1000 kilobytes) from the intermediate language data memory size (8000 kilobytes) (7000) K)), the process of S18 is executed.

(1−4)また、上記の(1)の例において、5000キロバイトの中間言語データと他の処理で作成された1000キロバイトの他処理データと1000キロバイトの圧縮多値BMPデータとが共通メモリ28に存在し、次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが6500キロバイトになる場合、制御部16は、S18でNOと判断してもよい。この例の場合、中間言語データの合計データサイズ(6500キロバイト)と中間言語データ用メモリサイズ(8000キロバイト)とを比較することによって、S18の処理を実行することになる。これは、上記の(1−2)と同様の手法である。 (1-4) In the example of (1) above, 5000 kilobytes of intermediate language data, 1000 kilobytes of other processing data created by other processing, and 1000 kilobytes of compressed multilevel BMP data are shared memory 28. If the intermediate language data is created from the next command and the total data size of the intermediate language data is 6500 kilobytes, the control unit 16 may determine NO in S18. In the case of this example, the process of S18 is executed by comparing the total data size of intermediate language data (6500 kilobytes) with the intermediate language data memory size (8000 kilobytes). This is the same method as the above (1-2).

(1−5)一方において、上記の(1−4)の例において、制御部16は、S18でYESと判断してもよい。中間言語データの合計データサイズ(6500キロバイト)と上記の他処理データのデータサイズ(1000キロバイト)と圧縮多値BMPデータのデータサイズ(1000キロバイト)との和が8500キロバイトであり、中間言語データ用メモリサイズ(8000キロバイト)を超えるからである。即ち、この例の場合、中間言語データの合計データサイズ(6500キロバイト)と、中間言語データ用メモリサイズ(8000キロバイト)から上記の他処理データ及び圧縮多値BMPデータのデータサイズ(1000+1000キロバイト)が減算された値(6000キロ)とを比較することによって、S18の処理を実行することになる。なお、メモリ容量が不足する場合、上記の他処理データにより占有されているメモリを開放する構成を採用することもできる。 (1-5) On the other hand, in the example of (1-4) above, the control unit 16 may determine YES in S18. The sum of the total data size of the intermediate language data (6500 kilobytes), the data size of the other processed data (1000 kilobytes) and the data size of the compressed multi-level BMP data (1000 kilobytes) is 8500 kilobytes, and is used for intermediate language data. This is because it exceeds the memory size (8000 kilobytes). That is, in this example, the total data size of intermediate language data (6500 kilobytes) and the memory size for intermediate language data (8000 kilobytes) and the data size (1000 + 1000 kilobytes) of the other processing data and compressed multi-level BMP data are as follows. By comparing with the subtracted value (6000 km), the process of S18 is executed. Note that when the memory capacity is insufficient, a configuration in which the memory occupied by the other processing data is released may be employed.

上記の(1−1)〜(1−5)のいずれの手法であっても、PDLデータの次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが第1所定値以上になるのか否かを判断することになる。即ち、上記の(1−1)、(1−2)、及び、(1−4)では、上記の第1所定値が8000キロバイトである。上記の(1−3)では、上記の第1所定値が7000キロバイトである。上記の(1−5)では、上記の第1所定値が6000キロバイトである。   In any of the above methods (1-1) to (1-5), if the intermediate language data is created from the next command of the PDL data, the total data size of the intermediate language data exceeds the first predetermined value. It will be judged whether or not. That is, in the above (1-1), (1-2), and (1-4), the first predetermined value is 8000 kilobytes. In the above (1-3), the first predetermined value is 7000 kilobytes. In the above (1-5), the first predetermined value is 6000 kilobytes.

なお、上記の(1−3)及び(1−5)の手法は、PDLデータの次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが増加することに起因して、共通メモリ内の残存メモリサイズが第2所定値以下になるのか否か判断することに等しい。即ち、上記の(1−3)では、上記の残存メモリサイズが1500キロバイト(10000−7500−1000)になり、上記の第2所定値が2000キロバイト(多値BMPデータ用メモリサイズ)になる。また、上記の(1−5)でも、上記の残存メモリサイズが1500キロバイトになり(10000−6500−1000−1000)、上記の第2所定値が2000キロバイトになる。   Note that the above methods (1-3) and (1-5) are common because the total data size of the intermediate language data increases when the intermediate language data is created from the next command of the PDL data. This is equivalent to determining whether the remaining memory size in the memory is equal to or smaller than the second predetermined value. That is, in the above (1-3), the remaining memory size is 1500 kilobytes (10000-7500-1000), and the second predetermined value is 2000 kilobytes (memory size for multi-level BMP data). In the above (1-5), the remaining memory size is 1500 kilobytes (10000-6500-1000-1000), and the second predetermined value is 2000 kilobytes.

(2)上記の実施例では、プリンタ10は、中間言語データから多値BMPデータを作成し、多値BMPデータから二値BMPデータを作成する。しかしながら、プリンタ10は、中間言語データから直接的に二値BMPデータを作成してもよい。この場合、図2〜図4の各処理において、二値BMPデータが作成されることになる。 (2) In the above embodiment, the printer 10 creates multilevel BMP data from the intermediate language data, and creates binary BMP data from the multilevel BMP data. However, the printer 10 may create binary BMP data directly from the intermediate language data. In this case, binary BMP data is created in each process of FIGS.

(3)また、上記の実施例では、プリンタ10は、PDLデータから中間言語データを作成し、中間言語データからBMPデータを作成する。しかしながら、上記の実施例の技術は、二段階に亘ってデータを変換するあらゆる技術に適用することができる。例えば、PDLデータから所定種類のPDLデータ(例えばPDF)を作成し、その所定種類のPDLデータからBMPデータを作成する技術にも適用することができる。 (3) In the above embodiment, the printer 10 creates intermediate language data from PDL data, and creates BMP data from the intermediate language data. However, the technique of the above embodiment can be applied to any technique that converts data in two stages. For example, the present invention can also be applied to a technique for creating a predetermined type of PDL data (for example, PDF) from PDL data and creating BMP data from the predetermined type of PDL data.

(4)上記の実施例では、多値BMPデータをバンド単位で作成するとともに、二値BMPデータをバンド単位で作成する(バンドメモリ50を利用する)。これに代えて、PDLデータ変換処理部14は、1ページ分の多値BMPデータを作成した後に、多値BMPデータを印刷部40に送信するようにしてもよい。この場合、印刷部40は、バンドメモリ50に代えて、少なくとも1ページ分の二値BMPデータを記憶することができるページメモリを利用する。 (4) In the above embodiment, multi-value BMP data is created in band units, and binary BMP data is created in band units (using the band memory 50). Instead of this, the PDL data conversion processing unit 14 may generate the multi-value BMP data for one page and then transmit the multi-value BMP data to the printing unit 40. In this case, the printing unit 40 uses a page memory that can store binary BMP data for at least one page, instead of the band memory 50.

また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。   The technical elements described in this specification or the drawings exhibit technical usefulness alone or in various combinations, and are not limited to the combinations described in the claims at the time of filing. In addition, the technology illustrated in the present specification or the drawings achieves a plurality of objects at the same time, and has technical utility by achieving one of the objects.

プリンタネットワークシステムの構成の一例を示す。1 shows an example of the configuration of a printer network system. PDL変換処理のフローチャートを示す。The flowchart of a PDL conversion process is shown. 図2の続きのフローチャートを示す。FIG. 3 is a flowchart continued from FIG. 2. FIG. 図2の続きのフローチャートを示す。FIG. 3 is a flowchart continued from FIG. 2. FIG. PDLデータの構成を簡単に示す。The structure of PDL data is shown briefly. 共通メモリを示す。Indicates common memory. 中間言語データが格納されている状態の共通メモリを示す。The common memory in a state where intermediate language data is stored is shown. 中間言語データと多値BMPデータが格納されている状態の共通メモリを示す。The common memory in a state where intermediate language data and multi-level BMP data are stored is shown. 圧縮多値BMPデータが格納されている状態の共通メモリを示す。The common memory in a state where compressed multilevel BMP data is stored is shown. 中間言語データと圧縮多値BMPデータが格納されている状態の共通メモリを示す。The common memory in a state where intermediate language data and compressed multilevel BMP data are stored is shown. 中間言語データと多値BMPデータが格納されている状態の共通メモリを示す。The common memory in a state where intermediate language data and multi-level BMP data are stored is shown. 中間言語データと圧縮多値BMPデータが格納されている状態の共通メモリを示す。The common memory in a state where intermediate language data and compressed multilevel BMP data are stored is shown.

符号の説明Explanation of symbols

10:プリンタ
12:ネットワークインターフェイス
13:インターフェイス用バッファ
14:PDLデータ変換処理部
16:制御部
18:プログラム記憶領域
20:中間言語データ作成プログラム
22:多値BMPデータ作成プログラム
24:メモリ管理プログラム
28:共通メモリ
40:印刷部
42:プログラム記憶領域
44:二値BMPデータ作成プログラム
48:バッファ
50:バンドメモリ
52:印刷機構
70:LAN回線
100:PDLデータ
120:使用可能なメモリサイズ
130:多値BMPデータ用メモリサイズ
140:中間言語データ用メモリサイズ
CP1,CP2,CP3:PDLデータのコマンド
CM1,CM2,CM3:中間言語データ
CB1,CB2,CB3:多値BMPデータ
CB1’,CB2’,CB3’:圧縮多値BMPデータ
10: Printer 12: Network interface 13: Interface buffer 14: PDL data conversion processing unit 16: Control unit 18: Program storage area 20: Intermediate language data creation program 22: Multi-level BMP data creation program 24: Memory management program 28: Common memory 40: Printing unit 42: Program storage area 44: Binary BMP data creation program 48: Buffer 50: Band memory 52: Printing mechanism 70: LAN line 100: PDL data 120: Usable memory size 130: Multi-value BMP Data memory size 140: Intermediate language data memory size CP1, CP2, CP3: PDL data commands CM1, CM2, CM3: Intermediate language data CB1, CB2, CB3: Multi-valued BMP data CB1 ′, CB2 ′, CB3 ′: Pressure Multilevel BMP data

Claims (4)

第1データから第2データを作成し、前記第2データから第3データを作成するデータ処理装置であり、
前記第1データを入力する第1データ入力手段と、
前記第1データに含まれる複数個の部分第1データから前記第2データに含まれる複数個の部分第2データ順次作成するための第1プログラムを記憶している第1プログラム記憶手段と、
前記第2データに含まれる前記複数個の部分第2データから前記第3データを作成するための第2プログラムを記憶している第2プログラム記憶手段と、
前記第2データと前記第3データの両方を格納するために利用されるメモリと、
前記第1プログラムに従って処理を実行することが可能であり、前記第2プログラムに従って処理を実行することが可能であり、それらの両処理のためのメモリ管理を統括して実行する制御手段とを備え、
前記制御手段は、
前記メモリ内の使用可能メモリサイズよりも小さいメモリサイズであって、前記第2データの作成に使用されるべき前記メモリサイズである所定値を特定し、
前記複数個の部分第1データのうちの処理対象の部分第1データを処理すべき毎に、仮に、当該処理対象の部分第1データから1個の部分第2データを前記メモリ内に作成したら、前記1個の部分第2データを含む前記メモリ内の2個以上の部分第2データの合計データサイズが、前記所定値以上になるのか否かを判断し、
前記合計データサイズが前記所定値以上にならないと判断される場合に、前記処理対象の部分第1データから前記1個の部分第2データを前記メモリ内に作成し、
前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に圧縮状態の第3データが存在しない場合に、
(A1)前記メモリ内のM個(前記Mは1以上の整数)の部分第2データから前記第3データを前記メモリ内に作成し、
(A2)前記メモリ内の前記第3データを圧縮して、前記圧縮状態の第3データを前記メモリ内に作成し、
(A3)前記M個の部分第2データを前記メモリから削除し、
前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に前記圧縮状態の第3データが存在する場合に、
(B1)前記圧縮状態の第3データを伸張して、伸張状態の第3データを前記メモリ内に作成し、
(B2)前記メモリ内のN個(前記Nは1以上の整数)の部分第2データと、前記メモリ内の前記伸張状態の第3データと、から、新たな第3データを前記メモリ内に作成し、
(B3)前記メモリ内の前記新たな第3データを圧縮して、新たな圧縮状態の第3データを前記メモリ内に作成し、
(B4)前記N個の部分第2データを前記メモリから削除し、
前記制御手段は、前記メモリ内の前記第3データの合計データサイズが、前記使用可能メモリサイズから前記所定値が減算された値よりも大きくなるのか否かに関わらず、前記(B2)を実行する、
ことを特徴とするデータ処理装置。
From the first data to create a second data, a data processing device for creating a third data from the second data,
A first data input means for inputting said first data,
A first program storage means for storing a first program for sequentially creating a plurality of partial second data from a plurality of partial first data included in the second data contained in the first data,
A second program storage means for storing a second program for creating the third data from said plurality of partial second data contained in the second data,
A memory used to store both the third data and said second data,
It is possible to execute processing in accordance with the first program, it is possible to execute processing in accordance with the second program, and a control unit which centrally executes memory management for those two processes ,
The control means includes
Specifying a predetermined value which is a memory size smaller than an available memory size in the memory and is the memory size to be used for creating the second data;
Each time the partial first data to be processed of the plurality of partial first data is to be processed, one partial second data is created in the memory from the partial first data to be processed. Determining whether a total data size of two or more partial second data in the memory including the one partial second data is equal to or larger than the predetermined value;
When it is determined that the total data size does not exceed the predetermined value, the one partial second data is created in the memory from the partial first data to be processed,
When it is determined that the total data size is equal to or greater than the predetermined value, when there is no compressed third data in the memory,
(A1) Create the third data in the memory from M partial data (where M is an integer equal to or greater than 1) in the memory,
(A2) compressing the third data in the memory to create the compressed third data in the memory;
(A3) deleting the M partial second data from the memory;
When it is determined that the total data size is equal to or greater than the predetermined value, when the compressed third data exists in the memory,
(B1) Decompressing the compressed third data to create the decompressed third data in the memory;
(B2) New third data is stored in the memory from N partial second data (where N is an integer equal to or greater than 1) in the memory and the third data in the expanded state in the memory. make,
(B3) compressing the new third data in the memory to create new compressed third data in the memory;
(B4) deleting the N partial second data from the memory;
The control means executes (B2) regardless of whether or not the total data size of the third data in the memory is larger than a value obtained by subtracting the predetermined value from the usable memory size. To
A data processing apparatus.
前記第1データは、ページ記述言語で記述されたデータであり、
前記第2データは、前記ページ記述言語と異なる種類の言語で記述されたデータであり、
前記第3データは、ビットマップデータである
ことを特徴とする請求項に記載のデータ処理装置。
The first data is data described in a page description language;
The second data is data described in a language different from the page description language,
The data processing apparatus according to claim 1 , wherein the third data is bitmap data.
1ページ分のデータである前記第1データに、前記複数個の部分第1データが含まれる、ことを特徴とする請求項に記載のデータ処理装置。 The data processing apparatus according to claim 2 , wherein the first data which is data for one page includes the plurality of partial first data . 第1データから第2データを作成し、前記第2データから第3データを作成するためのコンピュータプログラムであり、
そのコンピュータプログラムは、前記第1データに含まれる複数個の部分第1データから前記第2データに含まれる複数個の部分第2データ順次作成するための第1プログラムと、前記第2データに含まれる前記複数個の部分第2データから前記第3データを作成するための第2プログラムとを含んでおり
そのコンピュータプログラムは、前記第1プログラムに従っ処理と、前記第2プログラムに従っ処理と、それらの両処理のためのメモリ管理を統括して実行する処理とを含む制御処理をコンピュータに実行させ、
前記制御処理は、
メモリ内の使用可能メモリサイズよりも小さいメモリサイズであって、前記第2データの作成に使用されるべき前記メモリサイズである所定値を特定し、
前記複数個の部分第1データのうちの処理対象の部分第1データを処理すべき毎に、仮に、当該処理対象の部分第1データから1個の部分第2データを前記メモリ内に作成したら、前記1個の部分第2データを含む前記メモリ内の2個以上の部分第2データの合計データサイズが、前記所定値以上になるのか否かを判断し、
前記合計データサイズが前記所定値以上にならないと判断される場合に、前記処理対象の部分第1データから前記1個の部分第2データを前記メモリ内に作成し、
前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に圧縮状態の第3データが存在しない場合に、
(A1)前記メモリ内のM個(前記Mは1以上の整数)の部分第2データから前記第3データを前記メモリ内に作成し、
(A2)前記メモリ内の前記第3データを圧縮して、前記圧縮状態の第3データを前記メモリ内に作成し、
(A3)前記M個の部分第2データを前記メモリから削除し、
前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に前記圧縮状態の第3データが存在する場合に、
(B1)前記圧縮状態の第3データを伸張して、伸張状態の第3データを前記メモリ内に作成し、
(B2)前記メモリ内のN個(前記Nは1以上の整数)の部分第2データと、前記メモリ内の前記伸張状態の第3データと、から、新たな第3データを前記メモリ内に作成し、
(B3)前記メモリ内の前記新たな第3データを圧縮して、新たな圧縮状態の第3データを前記メモリ内に作成し、
(B4)前記N個の部分第2データを前記メモリから削除し、
前記制御処理では、前記メモリ内の前記第3データの合計データサイズが、前記使用可能メモリサイズから前記所定値が減算された値よりも大きくなるのか否かに関わらず、前記(B2)を実行する、
ことを特徴とするコンピュータプログラム。
From the first data to create a second data, a computer program for creating a third data from the second data,
The computer program includes a first program for sequentially creating a plurality of partial second data from a plurality of partial first data included in the second data contained in the first data, the second data the computer program includes a second program for creating the third data from said plurality of partial second data included in a processing according to the first program, according to the second program Causing the computer to execute a control process including a process and a process for controlling and executing memory management for both processes,
In the control process,
Specifying a predetermined value which is a memory size smaller than an available memory size in the memory and is the memory size to be used for creating the second data;
Each time the partial first data to be processed of the plurality of partial first data is to be processed, one partial second data is created in the memory from the partial first data to be processed. Determining whether a total data size of two or more partial second data in the memory including the one partial second data is equal to or larger than the predetermined value;
When it is determined that the total data size does not exceed the predetermined value, the one partial second data is created in the memory from the partial first data to be processed,
When it is determined that the total data size is equal to or greater than the predetermined value, when there is no compressed third data in the memory,
(A1) Create the third data in the memory from M partial data (where M is an integer equal to or greater than 1) in the memory,
(A2) compressing the third data in the memory to create the compressed third data in the memory;
(A3) deleting the M partial second data from the memory;
When it is determined that the total data size is equal to or greater than the predetermined value, when the compressed third data exists in the memory,
(B1) Decompressing the compressed third data to create the decompressed third data in the memory;
(B2) New third data is stored in the memory from N partial second data (where N is an integer equal to or greater than 1) in the memory and the third data in the expanded state in the memory. make,
(B3) compressing the new third data in the memory to create new compressed third data in the memory;
(B4) deleting the N partial second data from the memory;
In the control process, (B2) is executed regardless of whether or not the total data size of the third data in the memory is larger than a value obtained by subtracting the predetermined value from the usable memory size. To
A computer program characterized by the above.
JP2008091529A 2008-03-31 2008-03-31 Data processing device Active JP5194952B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008091529A JP5194952B2 (en) 2008-03-31 2008-03-31 Data processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008091529A JP5194952B2 (en) 2008-03-31 2008-03-31 Data processing device

Publications (2)

Publication Number Publication Date
JP2009241449A JP2009241449A (en) 2009-10-22
JP5194952B2 true JP5194952B2 (en) 2013-05-08

Family

ID=41303929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008091529A Active JP5194952B2 (en) 2008-03-31 2008-03-31 Data processing device

Country Status (1)

Country Link
JP (1) JP5194952B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4957816B2 (en) * 2010-02-03 2012-06-20 ブラザー工業株式会社 PDL data processing apparatus and PDL data processing program

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09277619A (en) * 1996-04-12 1997-10-28 Brother Ind Ltd Printer and printing method
JPH10297050A (en) * 1997-02-28 1998-11-10 Canon Inc Output controller, output control method, image processor, image processing method, and recording medium
JP2000313145A (en) * 1999-03-01 2000-11-14 Canon Inc Print controller, data processing method therefor, and recording medium storing computer readable program
JP4323618B2 (en) * 1999-05-31 2009-09-02 キヤノン株式会社 Image processing apparatus and image processing method
JP2004326266A (en) * 2003-04-22 2004-11-18 Canon Inc Print control method, information processing device, and printer
JP2007172505A (en) * 2005-12-26 2007-07-05 Konica Minolta Business Technologies Inc Image forming apparatus, image forming method and program
JP4816238B2 (en) * 2006-05-16 2011-11-16 コニカミノルタビジネステクノロジーズ株式会社 Image forming apparatus, image forming method, and program
JP4238889B2 (en) * 2006-07-20 2009-03-18 コニカミノルタビジネステクノロジーズ株式会社 Image forming apparatus, image forming method, and program
JP4337885B2 (en) * 2007-02-15 2009-09-30 コニカミノルタビジネステクノロジーズ株式会社 Image forming apparatus and image forming method

Also Published As

Publication number Publication date
JP2009241449A (en) 2009-10-22

Similar Documents

Publication Publication Date Title
US6192157B1 (en) Modifications of postscript adaptive data compression (ADC) for 3 plane, 8 bit color images, JPEG lossy compression, and variable Q factors
JP4476909B2 (en) Printing apparatus, printing processing method, printing processing program, and recording medium
JP5051327B1 (en) Image processing apparatus and program
JP2011084045A (en) Image processor, image processing method, and program
US20110141508A1 (en) Variable printing control apparatus and control program
JP2008167422A (en) Color processor, pdl processor, image forming apparatus, color converting method, computer program, and recording medium
JP5194952B2 (en) Data processing device
JP5446047B2 (en) Print control apparatus, image forming system, and program
JP4985034B2 (en) Deployment data creation method, apparatus and program
US20040120007A1 (en) Method and apparatus for forming a display list
US20040075859A1 (en) Printer instruction processing
US6985258B1 (en) Print system
US20040012797A1 (en) Load balancing in image generation
US20090244622A1 (en) Systems and Methods for Rendering Print Data
US9300747B2 (en) Server
US20100027037A1 (en) Image Processing Controller and Image Processing Apparatus
JP6185745B2 (en) Print control apparatus, print control method, and program
JP2017194932A (en) Image processing apparatus, image processing method, and program
JP2013119242A (en) Image forming apparatus, image forming method, and program
JP4869890B2 (en) Image processing apparatus and program
JP4259328B2 (en) Image processing apparatus, printer, and method for reading stored data
JP7467211B2 (en) IMAGE PROCESSING APPARATUS, IMAGE PROCESSING METHOD AND PROGRAM FOR IMAGE PROCESSING APPARATUS
JP2007086968A (en) Print system, printer driver, print controller, and printer
JP5574242B2 (en) Print control apparatus, print control program, and print control method
JP2017022656A (en) Print control device, printer, control method and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120501

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120702

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130121

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5194952

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150