JPH038065A - 文字処理装置 - Google Patents

文字処理装置

Info

Publication number
JPH038065A
JPH038065A JP1020230A JP2023089A JPH038065A JP H038065 A JPH038065 A JP H038065A JP 1020230 A JP1020230 A JP 1020230A JP 2023089 A JP2023089 A JP 2023089A JP H038065 A JPH038065 A JP H038065A
Authority
JP
Japan
Prior art keywords
indent
cursor
block
processing
indented
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.)
Pending
Application number
JP1020230A
Other languages
English (en)
Inventor
Katsumi Masaki
正木 克己
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP1020230A priority Critical patent/JPH038065A/ja
Publication of JPH038065A publication Critical patent/JPH038065A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [産業上の利用分野コ 本発明は、文字処理装置に関し、特にブロック単位に文
意等の編集処理を行うことのできる文字処理装置に関す
るものである。
[従来の技術] 従来、任意の枠組みを設定し、その枠組単位に文字等情
報を入力し、編集処理を行うことのできる文字処理装置
があった。このような文字処理を行うための入力装置と
しては、例えばキャノン畑の日本語ワードプロセッサ、
モデル「キャノワード55」がある。この入力装置によ
って作表等の処理を行うことはきわめて有効である。と
ころで、このように形成される文字処理装置には、−M
に粋組みの自動拡大と自動縮小という2つの機能が具わ
っていた。すなわち、ある枠組み内への文字等の入力あ
るいは編集を行っているときに、その枠外へ文字等がは
み出してしまう場合、あるいはその枠内の文字数を減少
させたためにその枠が犬きすぎてしまう場合が生じても
、自動的にその粋を拡大したり、あるいは縮小したりす
る枠組みの自動可変機能を有していた。
[発明が解決しようとする課題] しかしながら、このような従来の文字処理装置にあって
は、自動的に粋の拡大を行おうとしたとき、場合によっ
ては不自然な拡大が起こるといった欠点があった。この
ような不都合な従来例を第1図(A)およびCB)に示
す。同図(A)に示すようにひし形のマーク(◇)によ
り枠組みされている領域へRIが、1文字“L“の入力
に応じて同図(B)に示すような領域AR2に不必要に
拡大されてしまうというものであった。また、自動的に
枠の縮小を行おうとしたとき、場合によっては不自然な
縮小が起こるといった欠点があった。このような不都合
な例を第2図(A)および(B)に示す。同図(^)に
示すように、ひし形のマークにより枠組みされている領
域AR5が1文字“F”の削除に応じて同図(B) に
示すように領域AR6に縮小されてしまい、以前に設定
しておいた枠がくずれてしまうということが起こるもの
であった。
本発明の目的は、上述した点に鑑み、領域内における文
字入力に応じて、領域の大きさを変更させるか否かを指
示することができる文字処理装置を提供することにある
[課題を解決するための手段] かかる目的を達成するために本発明は、文字を入力する
入力手段と、入力手段によって入力された文字を表示す
る表示手段と、表示手段上の表示位置を指示するカーソ
ルを入力手段からの文字の入力に応じて!文字分ずつ進
めるカーソル制御手段と、表示手段上に所望の領域を設
定する領域設定手段と、領域設定手段によって設定され
た領域内における文字の入力に応じて領域の大きさを変
更する領域変更手段と、文字の入力に応じて領域変更手
段による領域の変更を行うか否かを指示する指示手段と
を有したことを特徴とする。
[作 用] 本発明は、上記構成により、領域の大きさを変更させる
か否かをオペレータ側で指示することができる。
[実施例] 以下、図面に基いて、本発明の実施例を詳細に説明する
なお、本実施例においては枠の自動拡大にあっては第1
図(C)  に示すように、また枠の縮小にあっては第
2図(C)の如く縮小する。
第3図に本発明装置の一実施例の回路構成を示す。なお
、本発明による実施例について述べる前に、本発明実施
例で用いる用語の説明をまず行う。
1、インデントコードTnd 表示装置CRTの画面上に“◇“のひし形マークで表示
される。文字等をキーボードから入力するにあたって、
予めこのインデントコードにより、枠組みが作られる。
2、左マージンコードLMM CRT上に“し”のマークで表示される。キーボードか
ら入力可能な最左端を表示する。
3 右マージンコードRMM CRT上に“〈”のマークで表示される。キーボードか
ら入力可能な最右端を表示する。
4、インデントブロックInb インデントマーク、左マージンマーク、右マージンマー
ク等で枠組みされた領域をさす。正しくは、次のように
定義される。
左右方向:インデントマーク、左マージンマーク、右マ
ージンマーク等で囲われる最 も小さい領域である。
上下方向:マージン、インデントの設定位置が同一であ
る範囲である。
インデントブロックの定義を換言する ならば、インデントマークあるいは左 マージンマーク、あるいは右マージン マークによフて囲まれる横方向で、最 も小さい領堺が段差なく上下に続く領 域である。
第4図(A)および(B)に、CRT上に表示されるイ
ンデントブロックの例を示す。
キーボードから入力された文字等は、このインデントブ
ロックInbという枠内で処理される。このインデント
ブロックInbは作表等のフォーマツティングされた文
章を作成する上で重要な役割をはたす。
本実施例においては、CRT上に表示されたカーソルC
Mが存在する位置以降に対して、インデントブロックI
nbの各種処理を行うため、前述した定義によるインデ
ントブロックInbの内でカーソルCMが存在する行以
降に対してのみインデントブロックInbという表現を
しているところがある。
5、枠組コード インデントコードInd 、 左マージンコードLMM
 。
右マージンコードRMMの3種のコードの総称である。
これらのコードは、枠組パターンレ、<。
◇と対応ずけられる(第5図(A)および(B)参照) 6 罫線コード 罫線部分パターンを図形文字としてコード化したもので
ある。S5図(A)で示す如く、11種の罫線パターン
が罫線コードと対応付けられている。
次に、本発明の一実施例による動作の概要を説明する。
本実施例の入出力装置は第3図に示すようにキーボード
(KB)、処理部の表示装置((:RT)およびプリン
タ(PRT)から成る。
すべての操作はキーボード上にある図示しない文字キー
あるいはファンクションキーにより実行する。
まず、イニシャライズキーによりすべての状態を初期化
し、本実施例の各機能が実行可能な状態となる。
イニシャライズキーを押すことにより、表示装置上には
、左右マージンマークLMMおよびRMMが表示され、
他はすべてクリアされる。このとき、カーソルCMは、
最上性の第2コラム目に位置し、キーボードからの文字
等の入力が可能となる、入力モー::である挿入とオー
バーライドとの選択は、挿入キーあるいはオーバーライ
ドキーを用いることにより行う、キーボードから入力さ
れた文字等は、挿入モードあるいはオーバーライドモー
ドにおいて、表示装置上でカーソルCMが表示されてい
る位置に入力される。カーソルCMはキーボードからの
文字等の入力に従って、1つずつ歩進する。
また、誤入力を行ったときは、削除キーを用い削除する
ことができ、その場合は、後続する文字列は1つずつ前
につめられる。削除しようとする文字はカーソルCMで
指定する。カーソルCMは、カーソルキーにより1つず
つ歩進させることができる。
入力が終了した文字列はプリントキーを押下することに
よりプリンタに出力させることができる。以上説明した
入出力制御はCPt1  (処理部)を用いて公知の技
術で容易に実現することができる。
次に、枠組みの設定およびその内部での文字等の入力編
集について述べる。
まず、インデントブロックInbを形成する方法につい
て述べる。インデントブロックInbは、インデントキ
ーを用いて表示装置上にインデントマーク(インデント
コードrndによるCRT上の表示マークで同一符号を
用いる。以下同じ。) fndをオーバーライドまたは
挿入することにより形造ることができる。−度、インデ
ントブロックが出来上った後は、キーボードから入力さ
れた文字等の情報は、すべてこのインデントブロックr
nb内で処理されることになる。これにより、作表等の
フォーマツティングされた文章の作成は、容易に行える
ようになる。また、このインデントブロックInbは横
方向に自由に拡大、縮小ができる。この様子を第6図(
^) 、 CB)を用いて説明する。
第6図(A)のように、インデントブロックInb内に
複数個の文字が既に入力されていたとする。
カーソルキーを用いてカーソルCMを第1行目第8桁目
の位置、すなわち、文字“B”の位置に移動した上で、
インデント右移動キーを1回押下すると、カーソルCM
が存在したインデントブロックは、横方向に縮小され、
その分群方向に拡大され、第6図(B)のようになる。
次に、第6図(B) のようにカーソルCMをインデン
トマークIndの位置におき、インデント右移動キーを
2回押下すると、カーソルCMの位置より左側に数えて
2番目のインデントブロックInbが拡大し、第6図(
C)のようになる。
すなわち、第6図(A)において、インデント右8勅キ
ーを1回押下すると、第6図(B)のようになり、第6
図(^)においてインデント右穆勤キーを2回押下する
と第6図(C)のようになる。
第6図(B)のように、カーソルCMをインデントマー
クIndの位置におき、インデント右穆勅キーを押下し
たときのことをもう一度考察する。この例においては、
カーソルのすぐ左側に存在するインデントブロックはす
べてスペースコードであった。従って、カーソルの位置
より左側に数えて2番目のインデントブロックが拡大し
ても、それによって喪失する文字(スペースは除く)は
存在しない、しかしながら、カーソルのすぐ左側に存在
するインデントブロックにすでに文字が存在している場
合もある。このときには、カーソルの位置から左側に数
えて2番目のインデントブロックが拡大すると文字等の
喪失が発生することが起こり得る。そこで、文字等(ス
ペースコードを除く)の喪失が発生する可能性があると
きは、インデントブロックの拡大は行なわず、文字等(
スペースコードを除く)の喪失が発生する可能性のない
とき、インデントブロックの拡大を行なうものとする。
第6図(B) および(C)におけるインデントブロッ
クの拡大は、関係する二つのインデントブロックの縦サ
イズが等しいときにおける例であるが、さらに第7図(
A)およびCB)に関係する二つのインデントブロック
の縦サイズが異なる場合の例を示す。この場合、拡大す
るインデントブロックInb 1の縦サイズよりもその
拡大の影響を受けるインデントブロックInb 2の縦
サイズの方が大きいために、インデントブロックInb
 1の拡大によって影響を受けるインデントブロックは
、インデントブロックInb 2に限られることになり
、インデントブロックInb 2内に有効情報(本実施
例においてはスペースコード以外の情報)が存在しない
限り、インデントブロックInb 1の拡大は可能であ
る。しかしながら、もし拡大するインデントブロックの
縦サイズ(行方向の大きさ)が拡大の影響を受けるイン
デントブロックの縦サイズよりも大きいときは、拡大の
影響を受けるインデントブロックは複数個となるため、
処理が複雑となるので、その拡大処理は行わないものと
する。
インデント左移動キーを用いてインデントマークInd
の移動を行フなときも、以上の説明と類似の動作を行う
次に、インデントブロックInb内に文字等の入力を行
フたときについて、第8図(A) 、 (B)および(
C)を用いて説明する。第8図(A)のように、インデ
ントブロックInb内に文字等が入力され、カーソルC
MがインデントブロックInbの最後に位置していたと
する。第8図(A)において、文字“L”をオーバーラ
イドモートで入力したとすると、第8図のようになる。
すなわち、インデントブロックは縦方向(矢印a)に自
動的に拡大され、次に入力される文字等に対する格納エ
リアの準備を行う。
第8図(B)でさらに“MNOP″と入力を続行すると
、第8図(C)のようにさらに同じ拡大を続ける。
第8図(B)で、さらにインデントブロックを拡大しよ
うとすると、下方に隣接するインデントブロックInb
を1行づつ下方にずらさねばならなくなる。第8図(C
)がその例である。
次に、インデントブロック内の文字の削除方法について
説明する。第9図(A)のように、インデントブロック
Inb内に文字が入力され、カーソルCMが“W”の下
に位置していたとする。削除キーを押下することにより
、以下に続く文字は1つづつ前につまる。その結果、今
まで“Y”という文字が存在していた行LNはスペース
コード、左マージンコート、右マージンコード、インデ
ントコードのみから成る行となってしまう。本実施例に
おいては、この行LNを自動的に削除し、以下に続く行
をすべて1行づつ繰り上げるものとする。第9図(B)
がその結果である。
次に、インデントマークIndを削除する方法について
述べる。
一つは削除キーを用いる方法であり、インデントマーク
はスペースコードに置きかわる。
次に、インデントマークと罫線パターンとの切換機能に
ついて説明する。今、第5図(B)のようにインデント
ブロックInbが形成されているとする。ここで、イン
デント罫線変換キーを押下すると、第5図(C)の如く
インデントマークが罫線パターンに変換される。また、
第5図(C)において罫線インデント変換キーを押下す
ると、第5図CB)の如く罫線パターンがインデントマ
ークに変換される。このようにして、インデントマーク
Indと罫線パターンにPMとの相互変換が可能となる
。この変換機能を用いることにより、インデントマーク
Indで枠組みされた領域に文章を入力し、然る後にイ
ンデントマークを罫線パターンに変更するならば、極め
て容易に罫線パターンにPMを有する文章を作成するこ
とができる。これは、作表する上で非常に便利である。
インデントマークの罫線パターンの変換は上述の如く、
インデント罫線変換キーを用いればワンタッチで行うこ
とができるが、インデントマークが罫線パターンに変換
される範囲は、下記の如くに規定される。
すなわち、上記変換される範囲はカーソルが存在する行
以降であって、インデントマークが存在する行が連続し
て続くところまでの範囲とする。
これによって、比較的単純なインデントマークの連らな
りから、複雑な罫線パターンの連らなりに変換すること
ができる。第10図にその例を示す。
第10図(^)において、カーソルを第2行の位置に持
ってきて、インデントマークを罫線パターンに変更する
と、全部のマークが罫線パターンとなった第1θ図(C
)の画面が得られる。一方、第10図(A)において、
カーソルを第6行の位置に持ってきて、インデントマー
クを罫線パターンに変更すると、下のインデントブロッ
クのみ罫線パターンとなった第1θ図(B)の画面が得
られる。さらに、第1θ図(B)において、カーソルを
第2行目に持ってきて、インデントマークを罫線マーク
に変換するならば、上のインデントブロックも罫線パタ
ーンとなった第1θ図(D)の画面が得られる。
このように、インデントマークを罫線パターンに変更す
るにあたって、カーソルによって範囲指定を行うことが
できるので、より自由な罫線パターンが得られる。さら
には、インデントマークを罫線パターンに変換する最終
領域をインデントが存在する行が連続して続くまでの範
囲と規定したため、やはり、より自由な罫線パターンを
得るのに役立っている。
一方、−度インデントマークを罫線パターンに変換した
後、罫線パターンが存在する近傍に文字等の入力を行っ
たり、挿入削除等の編集を行うならば、折角作った罫線
パターンの配列に乱れが発生することになる。そこで、
−度罫線パターンに変換した文章に対し、入力あるいは
編集を行なおうとするときには、罫線インデント変換キ
ーにより再び罫線パターンをインデントマークに変換し
た後、行うようにする。
第5図(D)に具体的にインデントパターンを罫線パタ
ーンに変更するときの対応テーブルを示す。なお、本実
施例においては、文字の入力、インデントの移動削除、
キャリッジリターンキー入力等の機能を実行させるにあ
たって、カーソルがインデントブロック単位でキャリッ
ジリターンコードが存在する行の右側に位置させること
はないものとする。
以上のようにして、入力wI集を行った文章は、プリン
トキーを押すことにより、プリンタに出力される。
343図に示した本発明による文字処理装置の一実施例
について、以下に各構成要素を説明する。
KBは文章入力用キー(例えば、JIS鍵盤に配列され
ているキー群)、および本装置にそなわる種々機能を実
現するためのファンクションキー群から成るキーボード
である。そのファンクションキー群は下記のファンクシ
ョンキー、すなわち、インデントを設定するためのイン
デントキー、インデントを右方向に移動するためのイン
デント右穆動キー、インデントを左方向に移動するため
のインデント左移動キー、これから入力する文字の挿入
および削除、オーバーライドを指示するための挿入キー
 削除キー、オーバーライドキーCRT上のカーソルを
移動するためのカーソルキー、カーソルをインデントブ
ロック単位に逆方向に移動させるバックスペースキー、
仕事の開始を指示するイニシャライズキー、改行を指示
するキャリッジリターンキー、インデントマークを罫線
マークに変換するインデント罫線変換キー、罫線マーク
をインデントマークに変換する罫線インデント変換キー
およびプリントを指示するプリントキーから成る。キー
ボードK[lはエンコーダ機能を有し、後述する処理部
CPυにより打鍵されたキーの情報が読みとられる。
CI(はカーソルレジスタである。後述する処理部CP
Uにより、カーソルレジスタCRの内容を読み書きする
ことができる。後述するCRTコントローラCRTCは
、このカーソルレジスタCRに蓄えられたアドレスに対
応する表示装置CRT上の位置に、カーソルを表示する
機能を有する。カーソルレジスタCRに蓄えられる情報
は1〜128までのシリアルナンバーとし、[;RTコ
ントローラCRTCは、このシリアルナンバーを行数1
桁ナンバーに変更し、カーソルを表示することになる。
WBはインデントブロックInb内の情報を一時的に蓄
えるためのワークバッファであり、バッファのヘッダ部
には7Wの(ワード)のパラメータが配置される。ワー
クバッファWBの記憶容量は18X9W+aの大きさと
する。ワークバッファWBは後述の処理部CPUにより
自由に読み書きできる。
DBuFはデータバッファであって、キーボードにBか
ら入力された文章情報を蓄えるためのメモリであり、後
述するCRTコントローラ(:RTCによって、ここに
蓄えられた情報が表示装置CRT上に表示される表示装
置CRT用のリフレッシュメモリとして使用される。デ
ータバッファDBuFは処理部CPUにより自由に読み
書きできるものとする。また、データバッファDBuF
は16X9Wの記憶容量を有し、そのうち前半の16x
8Wの領域のデータのみが表示装置CI’lT上に表示
されるものとする6CRTCはCRTコントローラであ
って、データバッファDBuFに蓄えられた情報に従っ
て、文字等を表示装置CRTに表示し、カーソルレジス
タCRに蓄えられた情報に従って、表示装置CRT上に
カーソルを表示する制御を行う。
表示装置CRT上の文字等の表示は、横16文字。
縦8行の表示とし、データバッファDBuFの内容と順
に対応づけられているものとする。
文字等の表示にあたっては、後述するキャラクタジェネ
レータCGを参照し、文字コードを文字パターンに変更
することを行う。具体的方法は公知である。
CRTは表示装置であり、CRTコントローラCRTC
により文字とカーソルを表示できる。
CGはキャラクタジェネレータであり、表示装置CRT
への文字表示やプリンタPRTへの文字出力のために使
用される。キャラシタジェネレータCGはCRTコント
ローラCRTG、および後述するプリンタコントローラ
PRTCにより用いられる。
PRTCはプリンタコントローラであり、後述する処理
部CPUからの文字コード情報を、キャラクタジェネレ
ータCGを参照することによりドツトパターン(フォン
ト)に直し、そのパターンをプリンタPRTに出力する
プリンタコントローラPRTCは、罫線コードを罫線パ
ターンに変換して出力することがで器る。好ましくは、
このパターン出力にあって、行間1文字間をも連続する
直線で埋める機能を有していた方がなお一層望ましい。
PRTはプリンタであり、プリンタコントローラPRT
Cからの情報に従って文字等をプリントアウトする。
CPUはマイクロプロセッサからなる処理部であり、演
算、論理判断等を行う。後述するAB、CB、DBのバ
スをコントロールする。
ABはアドレスバスであって、制御対象を指示する13
号を転送する。
CBはコントロールバスであって各f!制御対象に制御
信号を印加するものでる。
DBはデータバスであって各種データを転送する。
ROMは制御メモリであり、第11図以降に示す制御手
順等をあらかじめ記憶するものである。
RAMはランダムアクセスメモリであり、各種データの
例えばキャリッジリターンフラッグCRFG、オーバラ
イドフラッグ0WFG、新データ行数レジスタNDL 
、およびカーソルセーブレジスタC5Rの一時記憶に用
いられる。
成上、本実施例の動作説明を行う。
本実施例では、電源投入時に自動的にキーボード処理が
動作するように構成されているものとする。以下、各処
理につき具体的に第11図以降のフローチャートを参照
して、説明する。
まず、キーボード処理上のキーが操作されると、以下の
順序に従って操作キーが判別され、それぞれのキーに対
する処理が行われ、キー待ちの状態となる。
ステップ881でキーボードにBから入力があったかを
判別する。入力がなければ、キー待ちにもどり、入力が
あればステップにB2に移ってキーボードにBからのデ
ータを取り込む。ステップKB3で取り込んだデータが
キャリッジリターンキーか否かを判別する。YESであ
れば、キャリッジリターン入力処理を行い、ステップに
85でフラッグCRFGを1にセットし、キー待ちにも
どる。一方、ステップにB3でNOであれば、ステップ
にB6でフラッグ(:RFCを0にリセットして次のキ
ー判別ステップに移る。
(以下余白) ここで、ステップにB4のキャリッジリターンキー入力
処理についてさらに述べる。
第12図はキャリッジリターンキー入力処理についての
詳細を示すサブルーチンのフローチャートである。かか
る処理の各ステップの処理内容を以下に示す。
ステップ4.1 ステップ4.2 ステップ4.3 ステップ4.4 フラグCRFGがセットされている か? YESならステップ4.2へ、N。
ならステップ4.5へ進む。
現カーソル位置はインデントマー クのすぐ右隣か? YESならステッ プ4.3へ、NOならステップ4.5へ進む。
現カーソル位置のすぐ左隣のイン デントマークをスペースコードに 変更する。
カーソルを現カーソル位置よりも 左に位置し、かつ最も近いインチ ントマークあるいは左マージン マークのすぐ右隣の位置に移動さ せる。(カーソルを移動させるに はカーソルレジスタに該当数値を 記入する。)その後、メインルー チンに戻る。
ステップ4,5  文字キー入力処理16(後述)を実
行する。その後、メインルーチン に戻る。
上述の如く、本発明実施例においてはキャリツジリータ
ンキーにより枠組の変更を行うようにしているが、他の
キーにその機能をもたせるようにしてもよい。
ここで、再び第11図のキーボード処理の説明に戻る。
ステップにB6でフラッグにRFGをリセットした後、
ステップKB7に穆り、インデントキーが操作されたか
否かを判別する。 YESであればステップにB8のイ
ンデントキー入力処理を行う、すなわち、インデントマ
ークを現カーソルが存在する位置に書き込む。かかる処
理が終了すれば、ステップにBlのキー待ちに戻る。
第13図はステップKB8のインデントキー入力処理に
ついての詳細を示すサブルーチンのフローチャートであ
る。各ステップの処理を以下に示す。
ステップ8,1  現カーソルが存在している位置に対
応するデータバッファDBuF内の 位置にインデントコードを書き込 む。
ステップ8.2  カーソルを一つ歩進させるためにカ
ーソルキー入力処理14(後述す る)を行う。その後、メインルー チンに戻る。
ここで、再び第11図のキーボード処理の説明に戻る。
ステップにB7でNOであれば、ステップKB9に移り
、オーバライドキーが操作されたか否かを判別する。オ
ーバライドキーのキー操作があれば、ステップKBIO
でオーバライドフラッグ0IIIFGを1にセットし、
第14図で後述するキー待ちにもどる。もし、NOであ
れば、ステップKBIIに移り、挿入キーが操作された
か否かを判別する。YESであれば、ステップKB12
で挿入キー入力処理を行う。
すなわち、オーバライドフラッグ0WFGをリセットし
、第I5図で後述するキー待ちに移る。NOであわば、
ステップKB13に移り、カーソルキーが操作されたか
否かを判別する。YESであれば、ステップにB14 
(第16図にて後述する)に移り、カーソルをCR7画
面上で順次歩進させる。なお、カーソルが最終行の最終
桁にきたときには、カーソルを左上の位置に再びもどす
第16図に示すように、かかるカーソル歩進処理は以下
のステップ14.1〜14.3で行う。
14.1    カーソルレジスタCRをインクリメン
トする。
14.2    カーソルレジスタCRの値は128を
越えるか? YESならステップ14.3へ、NOなら
メインルーチンへ戻る。
14.3    カーソルレジスタGRの値を1にする
かかる処理が終れば、ステップにB1のキー待ちに戻る
。ステップKB13でもしでNOであれば、ステップK
B15に移る。かかるステップで文字キーが操作された
か否かを判別し、YESであれば、ステップKB16 
(第17図(^))にBす、以下の制御を行う。
16.1 現カーソルの位置にインデントマー ク、左右マージンマークは存在する か? YESならメインルーチンに戻り、NOならステ
ップ16,2へ進む。
インデントブロックセーブ(SAVE)処理(後述する
)をする。
オーバライドモードか? (オーバライドフラッグ参照)。YESならステップ1
6.4へ進み、NOならステップ16,5へ進む。
オーバライド処理(後述する)をす る。
挿入処理(後述する)をする。
インデントブロックリストアー (RESTORE)処理(後述する)をする。
その後、メインルーチンに戻る。
上述の各ステップは、以下の内容を行なってい16.5 16.6 16.4 16.2 16.3 る。
16,1 16.2 文字キー入力処理は、カーソルがイン デントブロック内に存在しているとき のみ有効とする。すなわち、インデン トマークおよび左右マージンマークの 位置にカーソルがあるとぎは、本処理 は無処理とする。
入力処理はすべてワークバッファWB内で行うため、カ
ーソルが存在するイン デントブロック内情報をすべてワーク バッファWB内に移す。但し、処理はすべてカーソルが
存在する行より、後と する。また、その際にワークバッファ WBの)IEADER部に各種パラメータを設定してお
く。
16.3〜16.4 16.5 オーバライドモードであるならば、 ワークバッファWB内でオーバライド処理を行う。
挿入モードであるならば、ワークバッ ファWB内で挿入処理を行なう。
16.6   文字入力処理を終了したワークバッファ
WB内の情報をもとのインデントブロックにもどす。
上述の処理をさらに説明する。
第17図(B)は文字のオーバライドの一例を示す。1
6.0で示す図をデータバッファDBuF内の初期状態
とする。ここでは紙面の都合で横8桁、縦4行のデータ
バッファDBuFが表示装置CRTに表示されている様
子を示している。第17図(A)のステップ16.2を
実行した結果が、同図(8)の16.2で示すデータバ
ッファとDBuFとワークバッファWBの様子である。
データバッファDBuF内のデータは、ワークバッファ
Weに穆されている。
次に、ステップ16.4によるオーバライド処理により
、ワークバッファWB内でのオーバーライド処理が行な
われる。同図(B)の16.2と16.4で示すワーク
バッファWB内の違いは、文字Cの後に文字りが加わっ
たことと、ワークバッファWBの第1w(DATA L
ENGTH)がインクリメントされたことと、ワークバ
ッファWB内の第4W(カーソルアドレス)がインクリ
メントされたことである。
ステップ16.4では、ワークバッファW8に蓄えられ
た情報が欠落なく該当インデントブロックにすべてもど
せるか否かを判断する。この場合、16.0で示すイン
デントブロックの容量、が2キヤラクタであり、ワーク
バッファWBに蓄えられている情報量はカーソルが移動
したために3キヤラクタに増加している。そのため、イ
ンデントブロックを縦方向に拡大し、ワークバッファW
B内の情報がすべて格納できるようにしたのが、第17
図(B)の16.4で示すデータバッファDBuFの様
子である。ステップ16.6では、拡大されたインデン
トブロックにオーバライド処理後のワークバッファWB
の情報をすべてもどすことを行う。同図(B)の16.
6で示す図がその様子を示している。
上述の処理において、ステップ16.2のインデントブ
ロックセーブ処理について第18図(八)のフローチャ
ートを用いてさらに説明する。かかるステップは、以下
の事を行なう。
ワークバッファWBのデータ格納エリアをすべてスペー
スコードでうめる。
カーソルが存在するインデントブロッ ク内のカーソルが存在する行以降の データバッファDBuFの内容を、ワークバッファWB
に移す(但し、キャリッジリターンコードに続くスペー
スコード は除く)。
そのインデントブロックをすべてス ペースコードで埋める。
16.2.4   ワークバッファWBのREADER
部に下記のパラメータを記入する。
1、 ワークバッファWBに書き込んだデータの長さ。
但し、カーソルが存在する位置までは 必ず含めるものとする。
2、上記インデントブロックの横幅。
3、上記インデントブロックの縦幅(インデントブロッ
クの行数)。
4、 カーソルレジスタに対応するワーク16.2.1 16.2.2 16.2.3 バッファ内のアドレス。
5.上記インデントブロックの先頭の データバッファDBuF上での桁ナン ノマ − 6、上記インデントブロックの先頭の データバッファDBuF上での行ナン ノN − 7、データ行数(縦幅から最後に連続して続くスペース
行数を除く)。
上述の各ステップは以下の目的を有する。
16.2.1   ワークバッファWeをスペースコー
ドでイニシャライズする。
16.2.2   インデントブロック内の情報をワー
クバッフ1WBに移す。
16.2.3   移し終った後のインデントブロック
はすべてスペースコードで埋める。
16.2.4   そのインデントブロックの特徴をす
べてワークバッファWBのHEADER部に記入してお
く、このHEADER部のパラメータは、各種処理にお
いてワークバッファ WBの内容に変更を加えた時に、同時に変更され、また
ワークバッファWBの内様をデータバッファDBuFに
もどすときに役立つものである。
上述のステップ18.2.2はさらに次のステップに分
かれる(図示せず)。
18.2.2.1  カーソルが存在するインデントブ
ロックの範囲を認識する。この認識は下記 のようにして行う。現カーソルが存在 している行を本処理におけるインデン トブロックの先頭行とする。現カーソ ルをはさむ現カーソルに最も近いイン デントマークあるいは左右マージン マークをさがし、それを当該インデン トブロックの横方向範囲とする。第1 行目の横方向範囲が段差なく縦方向 (行方向)に続くまでを当該インデン トブロックの縦方向の範囲とする。以 上のようにして上記インデントブロッ クの形状を認識する。インデントブ ロックの範囲の認識は後述するインデ ントブロックを扱う処理において、そ のたびに利用するが、そこでの説明は 省略する。
16.2.2.2  ステップ16.2.2.1で認識
されたインデントブロック内の情報をワークバッ ファWBに移す。
第18図(B)は、本処理における一例を示すものであ
る。ステップ16.2.4において、ワークバッファに
セーブするパラメータは次の通りである。
第1N  データの長さ ワークバッファWBに書き込んだデータの長さ。但し、
キャリッジリターンコードに続くスペースコードは除く
。また当該インデントブロックの最後に続くスペースコ
ードも除く。さらに、カーソルが存在している位置は、
例えそこにスペースコードが存在していても、スペース
コード以外のコードがそこに存在しているとみなすもの
とする。
第2W  横幅 当該インデントブロックの縦幅である。
第3W  縦幅 当該インデントブロックの縦幅である。
第4W  カーソル 現カーソルが示すDATAがワークバッファWBに格納
されている位置を示す。
最小値1であり、最大値は第1Wと同じ値となる。
第5W  当該インデントブロックの先頭桁当該インデ
ントブロックが存在するデータバッファDBuF上の位
置を規定する。該インデントブロックの先頭文字がデー
タバッファDBuFの何桁目に存在しているかを示す。
第1胃  当該インデントブロックの先頭行当該インデ
ントブロックが存在するデータバッファDBuF上の位
置を規定する。当該インデントブロックの先頭文字がデ
ータバッファDBuFの何行目に存在しているかを示す
第7W  データ行 インデントブロック内で、最後に連続して続くスペース
行を除いた縦幅を示す。但し、カーソルが存在している
位置にスペースコードが存在していても、この位置は文
字コードが存在していると同等とみなす。
最小値は1、最大値は第3Wと同じ値となる。
また、ステップ16.4のオーバライド処理(第19図
)の制御手順の詳細を以下に示す。
16.4.1   ワークバッフyWBの第4w(カー
ソル)の示すワークバッファWB内のDATA位置にオ
ーバライドすべきDATAをオーバライドし、ワークバ
ッファWBの%4vt(カーソル)の値を更新する。
16.4.2    ワークバッファWaの第41(カ
ーソル)の値は、ワークバッファIIIBの1lW(D
ATA LENGTH) よりも大きいか? YESの
ときは、次のステップ16.4.:lに進みNOのとぎ
はステップ16.6へ行く。
!5.4.:l  ワークバッファWBの第1W (D
ATALENGTI()の値をワークバッファWBの第
4W(カーソル)の値に置き換える。
上述の各ステップをさらに説明する。
16.4.1   ワークバッファWBの該当位置にデ
ータを書き込む。また、カーソルを進ませ るためにワークバッファWBの第4Wの値を更新する。
16.4.2〜16.4.3 カーソルの位置がワークバッファWBの第1Wのデータ
レングスよりも大きい場合には、カーソルの値、すなわ
ちワー クバッファWBの第4Wの値をワークバッファIIIB
の第1Wに穆す。すなわち、カーソルの位置のスペース
もデータに含め てデータ長を決定するものとする。
前述のステップ16.5の詳細を第20図を参照し、さ
らに説明する。
かかるステップ11i、5.1は、ワークバッファW8
の第4W(カーソル)の示すワークバッファWB内のデ
ータ位置に挿入すべぎデータを挿入し、ワークバッファ
第1W(DATA LENGTH) 、第4W(カーソ
ル)の値を歩進(+1)する。
かかるステップにより、ワークバッファWB内で挿入処
理を行い、ワークバッファWBの第1W(DATALE
NGTH)  と14W(カーソル)、との値をインク
リメントする。
次に、第17図(A)に示すインデントブロック再記憶
処理(リストア処理)のステップ16.6をさらに説明
する。第21図はそのサブルーチンを示す図である。
1B、6.1   横幅をワークバッファWBの第2W
の値としたときにおけるワークバッファW8の第1Wで
指定されたDATA量のDATAを格納するのに必要な
行数を求め、この行数 を新DATA行数とする。途中、CRコードが存在した
ときには、改行による行数 増加を考慮しなければならない。(新 データ行数レジスタNORに新DATA行数をセーブす
る。) 1B、6.2   新DATA行数はワークバッファi
’lB第3W(縦幅)よりも大きいか? YESならば
次のステップ18.6.3へ進み、NOならばステップ
16.6.4へ進む。
16.6.3   インデントブロック拡大処理を行う
その後、ステップ16.6.6へ進む。
1B、8.4   新データ行数レジスタNDIIの新
1)ATA行数は、ワークバッファWBの第7W(DA
TA行数)よりも小さいか? YESならば次のステッ
プ16.6.5へ進み、NOならばステップ16.8.
6へ進む。
16.6.5   インデントブロック縮小処理を行う
1[i、6.6   データバッファDBuFへの書き
込み処理を行う。
上述のステップ16.6.1〜1[!、6.5について
さらに説明する。
16.6.1   ワークバッファのHEADER部を
参照してワークバッフアWB内のデータをデータバッフ
ァDBuFに格納するに必要な行数を求める。
この行数を求めるにあたっては、ワー クバッファW6の第2W(横幅)に格納されているイン
デントブロック横幅の値 を参照する。
また、キャリッジリターンCRコード が存在したときは改行による行数増加 を考慮する。
16.6.2〜+8.6.3 求めた行数と、もとのインデントブ ロックの縦幅とを比較して、その行数 が縦幅を越えるときはインデントブ ロックの縦方向の拡大を行って、デー タエリアを確保する。
16.6.4〜16.6.5 求めた行数と、もとのデータの行数 (もとのインデントブロックの縦幅で なく、縦幅から最下行に連続して続く スペース行の数を差し引いたもの)と を比較し、その行数かもとのデータ行 数を下回るときには、その下回る分だ けインデントブロックの縦方向の縮小 処理を行う。
16.6.6    新しく作り直したインデントブロ
ックにワークバッファの内容を穆す。そ の際、ワークバッファの)IEADER部のパラメータ
を参照することにより行う。
上述のステップ16.6.3のインデントブロック拡大
処理について、さらに第22図(A)のステップを用い
て説明する。
16.6.3.1  行挿入処理を行う。
1B、6.3.2 5PACE行容動処理を行う。
1δ、6.3.3  [新DATA行数−ワークバッフ
ァ第3W(縦幅)]の大きさの分だけ繰り返したか?N
Oなら16.6.3.1のステップへ戻り、YESなら
本拡大処理を終了す る。
上記各ステップの目的は以下に示す通りであ+6.6.
3.1  カーソルが存在している行に、いわゆる行挿
入を行う。この際、挿入される 行DATAは下記の通りとする。
1、左端、右端にそれぞれ左マージンコート、右マージ
ンコードをセットす る。
前行にセットされているインデント コードのうちで、縦方向罫線に関する インデントコードが存在する位置に対 応する挿入する行の位置に、インデン トコードを書き込む。ここで、縦方向 罫線に関係するインデントコードと は、そのインデントが存在する前行に も横方向の同じ位置にインデントが存 在している場合のインデ゛ントであ る。
3、現在編集対象となっているインデントブロックの左
右境界を規定しているイ ンデントの位置に対応する挿入する行 の位置にインデントコードを書き込 む。この位置は一般に2の位置と一致 する。
4、 その他の位置にはスペースコードを書き込む。
以上の行挿入処理を行うことにより、第2図(C)・に
見られるようなインデントブロックの拡大が行えること
になる。
15.6.3.2  行挿入の結果、今まで連続して続
いていた文字列が切断され、文章としての つながりが保てなくなる。そこで、イ ンデント単位に挿入された行以降の データを1行づつくり上げることを行 う。
16.6゜3.3  インデントブロックを拡大する桁
数分だけステップ16.6.3.1と16.6.3.2
をくり返す。
上述の処理によるデータの配列の一例を第22図(B)
に示す。
第22図(B) はインデントブロック拡大処理の−例
を示すものである。15.6.3.1で示す図では、行
挿入が行われた様子が示されており、また16.6.3
.2で示す図ではインデント単位に挿入されだスペース
行を下にずらした様子が示されている。16.6.3.
2の図でわかるように、結果として、スペース行は、各
インデントごとに、ばらばらの位置に配されることにな
り、−行にまとまることはなくなる。この結果、各イン
デントブロック単位に、文意のa純性が保たれた形でイ
ンデントブロックの拡大が行われる。
前述のステップ16.6.3.1の行挿入処理について
ざらに第23図(^)のステップを用いて説明する。
かかる処理は、以下の各ステップから成る。なお、その
際のデータの流れを第23図CB) に示しておく。
15.6.3.1.1  データバッファ内でカーソル
が存在する行以降すべての行を1行下げ、 新しく発生した行にスペースフード を埋める。
16.6.3.1.2  新しく発生した行に、前行の
左マージンコード、インデントコード、右 マージンコードを同じ位置にコピー する。
上述のステップにより、現カーソルが示す位置にスペー
スコードだけから成る行を挿入し、しかる後、左マージ
ンマーク、右マージンマーク、インデントマークを前行
と全く同じ位置に記入する。
前述のステップ16.8.3.2のスペース行移動処理
についてさらに説明する。かかる処理は第24図(A)
に示す各ステップで行う。
16.6.3.2.1  カーソルが存在する行の最左
端のインデントブロックをさがす。
16.5.3.2.2  インデントブロックは存在し
たか?YESなら次のステップ16.6.3.2.3へ
進み、NOなら処理を終了する。
16.6.3.2.3  当該インデントブロックの先
頭にカーソル移動をする(カーソルの移 動は横方向のみ)。
1B、6.3.2.4  当該インデントブロックのカ
ーソルが存在している行はすべてスペース コードか?(インデントブロック単 位で調べる)。YESならなら次のス テップ16.6.3.2.5へ進み、NOならステップ
16.6.3.2.6へ進む。
16.6.3.2.5  当該インデントブロック内で
カーソルが存在している行を削除して、す べて1行繰り上げる。この縁り上げ を当該インデントブロックの最後ま で実行し、最下行はスペースコード で埋める。
16.6.3.2.6  右方ヘインデントブロックを
さがす、再びステップ16.8.3.2.2に戻る。
上述のステップを実行することにより、例えばステップ
16.6.3.2.L、 16.6J、2.2.16.
6.3.2.6により、インデントブロックごとに左方
から順に処理を実行し、すべてのインデントブロックに
対して処理が終了するまで続ける。
ステップ16J、3.2.3〜16.6.3.2.5に
より、各インデントブロック単位でスペース行を、各イ
ンデントブロックの最下行に移動させる。この処理はイ
ンデントブロック単位で実行するため、最下行に移動し
た5PACE行の位置はインデントブロックごとに異な
る。第24図(B)  にその例を示す。
前述のステップ16.6.5のインデントブロック縮小
処理の詳細を第25図に示す。そのステップについて説
明する。
16.6.5.1  当該インデントブロックの最終行
が存在する行全体に亙って、左マージン マーク、右マージンマーク、スペース コード、インデントコード以外のもの が存在せず、且つ上記行のインデント コード設定位置と全く同じ設定位置を 有する行が前後に存在するならば、ス テップ16.6.5.2に進む。そうでなければリター
ンする。
16.5.5.2  当該インデントブロックの最終行
を削除し、それ以降に続< DAT^をすべて1行分上
につめる。(インデントブロッ り単位でない)。
18.6.5.3  データバッファDBuFの最終行
に対応する位置にすべてスペースコードを埋め る。
+6.6.5.4  データバッファの最終行に左マー
ジンコード、右マージンコードを埋め る。
1[i、6.5.5  [ワークバッファ第7W(DA
TA行数)−新DATA行数]の大きさの分だけ縁り返
したか? YESならばリターンし、NOならばステッ
プ16.6.5.1に再び通る。
上述のステップ16.6.5.1〜16.6.5.5を
実行して以下の目的を実現する。
18.6.5.1  当該インデントブロックの最終行
において、隣接するインデントブロックも 含めて、すべて、左マージンコード。
右マージンコード、インデントマー ク、スペースコード以外のものが存在 していなかったら、また前後の行の少 なくとも一方と同じ位置にインデント が設定されていたならば次のステップ に進む。
16.6.5,2 15.6.5.1でチエツクした行
を削除し、後続する行を上へ繰り上げる。
(インデントブロック単位でなく、左 右マージンを含めて実行するものとす る)。
16.6.5.3〜16.6.5.4 最終行に対応するデータバッファの位 置、左右マージンコード、スペース コードを埋める。
16.6.5.5  縮小の必要なだけ縮小を繰り返す
前述のステップ16.6.8のデータバッファ書き込み
処理について第26図のステップを参照して説明する。
18.6.8.1  ワークバッファl’lBのHEA
DER部パラメータに従ってワークバッファ内DATA
をデータバッファDBuFに穆す。
(但し、途中に途中にCRコードが存在した場合改行を
行う)。インデントブ ロックをオーバーした分は捨てざ る。
16.6.6.2  ワークバッファWBの第4W(カ
ーソル)に記入された対応するDATA BUFFER
内アドレス全アドレスレジスタCRに記入する。(但し
、その値が128を越えるときは1とする)。
上述のステップ16.6.6.1〜16.6.6.2を
実行し、以下のことを行う。
16.8.8.1  ワークバッファの内容をデータバ
ッファに移す。
移すべきデータの長さは第1Wに、移 すべきインデントブロックの横幅は第 2Wに、移すべきインデントブロックのデータバッファ
DBuF内位置は第5Wと第6Wに示される。第5Wは
桁番号であり、第6Wは行番号であり、この、番号位置
に当該インデントブロックの先頭文字 が来ることになる。
18.6.6.2  カーソルレジスタへカーソルアド
レスを書き込むワークバッファWBの第4Wにカーソル
の存在すべきアドレスが記入 されている。この値を実際のデータ バッファ上でのアドレスに変換し、 カーソルレジスタCRに記入する。
−上述の処理が終了すると、第11図に示すステップK
BI6の文字処理が終了し、ステップKBIのキー待ち
に戻る。もし、ステップKB15でNOであれば、ステ
ップに817に移り、このステップKB17で削除キー
の操作があったか否かを判別する。YESであれば、第
27図(A)に示す削除キー入力処理制御を行う。各ス
テップの内容は以下の通りである。
18.1    現カーソル位置にインデントマークは
存在するか? YESなら、ステップ18.1へ進み、
NOならステップ18.3へ進む。
18.2    現カーソル位置に対応するアドレスの
内容をスペースコードに変更する。次 に、リターンする。
1863    インデントブロックセーブ処理(16
,2)を行う。
18.4    削除処理を行う。
18.5    インデントブロックリストア処理(ス
テップ16.6と同じ)を行う。なおこの処理は、カー
ソルが左右マージン上に あるとぎは機能しないものとする。
上述のステップにより以下の事を実行する。
18.1    カーソルがインデントマーク上にある
ときはステップ18.2に、カーソルがインデントマー
ク上にないときはステッ プ18.3へそれぞれ進む。
18.2    カーソルが存在する位置のコードをス
ペースコードに変更する。
18.3    当該インデントブロックのワークバッ
ファへのセーブを行う(ステップ16.2と同じ)。
18.4   ワークバッファ上で削除処理を行う。
18.5    削除処理されたワークバッファWBの
内容をデータバッファDBuFにもどす。
第27図(B)は上述の削除キー入力処理の一例を示す
ものである。各処理に対応して処理のステップ番号が付
されている。18,3のインデントブロックセーブ処理
と18.5のインデントブロックリストア処理ついては
、それぞれのステップにB16.2゜16.6で述べた
ので説明を省略する。18.4がワークバッフアWB上
で削除処理である。
かかるステップ18.4の削除処理は第28図に示すよ
うに3ステツプから成り、その各ステップを以下に示す
1B、4.1   ワークバッファWBの第4W(カー
ソル)の示すワークバッファ内のDATAを削除する。
(すなわち、このカーソル位置 以降に存在するDATAをすべて1つずつ前につめる。
) ワークバッファWBの第4W(カーソル)の値と第1W
(DATA LENGTI()の値とは等しいか?YE
Sならリターン、NOならステップ18.4.3へ進む
ワークバッファWBの第1W(DATA18.4.2 18.4.3 LENGTH)を1減する。
上述の各ステップにより以下の事を行う。
18.4.1   ワークバッファWBの第4Wの示す
ワークバッフアWB内のデータを削除し、後続するデー
タをすべて前へつめる。
(以下余白) +8.4.2〜+8.4.3 削除処理においては、カーソルの位置 は移動しないものとする。従って、ワ ークバッファWBの第1W(DへTA LENGTH)
の値を、ワークバッファWBの第4W (カーソル)の値よりも小さくならな い範囲で1を減するものとする。
上述の処理が終了すれば、ステップにB1のキー・待ち
に移り、ステップにB17でNOであれば第11図に示
すステップに819に移る。ステップにB19でインデ
ント右穆勤キーか否かを判別する。もし、YESであれ
ば第29図(A)のステップ20.1〜20.11に詳
細を示すインデント右穆動キー入力処理を行う。
20.1    現カーソル位置をセーブする。
20.2    現カーソルは、インデントコードの位
置にあるか? YESならステップ20,5へ進み、N
Oならステップ20.3へ進む。
20.3    インデントブロックセーブ処理(ステ
ップ16.2と同じ)を行う。
20.4    インデントブロック横縮小処理を行2
0.6 う。次にステップ2010へ移行す る。
現カーソルよりもさらに左方に別のイ ンデントコードが存在し、かつ、現 カーソルよりも左方に隣接してインデ ントブロックが2つ存在するか否かを 調べる。
(インデントブロックを認識する方法 はステップ16.2.2.1に説明した通りである。)
YESならばステップ20.6へ進み、N(lならばリ
ターンする。
(ステップ20.5で認識した2つのインデントブロッ
クの内、右側は拡大する 方のインデントブロックであり、左側 は拡大を受けるインデントブロックで ある。) このステップでは、拡大するインデン トブロックの縦方向(行方向)の大き さと拡大の影響を受けるインデントブ ロックの縦方向(行方向)の大きさと を比較し、前者が後者よりも小さい か、あるいは等しいか否かを調べる。
また、拡大の影響を受けるインデント ブロックに有効データが存在していな いことを調べる。両方ともYESが成立するならばステ
ップ20.7に進む。NO(否)ならばリターンする。
(なお、 縦方向の大きさを比較するにあたって は、各インデントブロックの行数を調 べ、かつその行数を比較することによ り行う。)また、拡大の影響を受ける インデントブロック内に有効データが 有るか否かを調べるには、ステップ 20.5で認識した拡大の影響を受ける方のインデント
ブロック内の情報を先頭 から末尾まで1文字づつ、有効情報 (スペースコード以外の情報)である か否かを判断し、1つでも有効情報が 存在したならば、当該インデントブ ロックに有効データが存在したと判断 20.7 20.8 20.9 20.10 20.11 する。(なお、木実施例では有効ブ タはスペースコード以外のデータと判 断したが、他のコード、例えばデータ がそこには存在しないことを示すコー ド以外のコードをすべて有効データと 判断してもよい。本出願人が既に出願 を行っている文字処理装置(特願昭54−139556
号)における白紙コードもそのデータが存在しないこと
を示すコー ドの一例である。) 現カーソルを第2のインデントブロッ クの最左端に移す。
インデントブロックのセーブ処理 (16,2)をする。
インデントブロック横拡大処理をす る。
インデントブロックのりストア処理 (16,6と同じ)をする。
現カーソル位置をセーブしておいた カーソル位置にもどす。
く注〉後述のインデントキー左移動 キー処理入力処理(ステップKB22)は上記説明で左
と右をすべて逆にしたも のと同じである。
〈注〉本処理はカーソルが左右マージ ン上にないものとする。
上述の各ステップの目的は以下の通りである。
20.1    現カーソルの位置をカーソル位置セー
ブレジスタにセーブする。
20.2    カーソルが文字上にあるときはステッ
プ20.3へ進み、カーソルがインデント上にあるとき
はステップ20.5へ進む。
20.3    インデントブロックをセーブする(ス
テップ16.2と同じ)。
20.4    ワークバッファ上でインデントブロッ
クの縮小処理を行う。ステップ20.10へ進む。
20.5,20.6 カーソルが存在する位置よりも左側に インデントブロックが2つ存在し、か 20.7 20.8 20.9 つカーソルのすぐ左隣のインデントブ ロックの縦幅がさらに左のインデント ブロックの縦幅よりも小さく(等しく ても良い)、かつカーソルから1つ置 いて左隣のインデントブロック内の情 報の中に有効データが存在しないとき にはステップ20.7に進む。(換言するならば、拡大
するインデントブロック の縦サイズにより拡大の影響を受ける インデントブロックの縦幅の方が大き く(等しくても良い)、拡大の影舌を 受けるインデントブロック内に有効 データが存在しなければ、ステップ 20.7に進む。) 2つのインデントブロックの左側のイ ンデントブロックの先頭文字の位置に カーソルを移動する。
インデントブロックのセーブ処理(ス テップ16.2と同じ)をする。
ワークバッファ内でインデントブロッ クの拡大処理を行う。
20.10   インデントブロックのりストア処理(
ステップ16.6と同じ)をする。
20.11   カーソル位置セーブレジスタC5Hに
セーブしておいたカーソル位置アドレ スをカーソルレジスタCRにもどす。
第29図(It)はカーソルが文字の上にあるときの処
理動作の一例である。この場合、インデント右移動キー
によって、インデントブロックは横方向に縮小される。
20.4で示す図はワークバッファWBを使用してイン
デントブロックの縮小を行ったところの例を示す。
第29図(C)はカーソルがインデント上にあるときの
例である。この場合、インデント右移動キーによりてイ
ンデントブロックは横方向に拡大される。20.9で示
す図はワークバッファWBを使用してインデントブロッ
クの拡大処理を行ったところの例を示す。
上述のステップ20.4をさらに説明すると、第30図
に示すようなステップから成る。
20.4.1 20.4.2 20.4.3 現カーソルが存在しているインデント ブロックを、現カーソルが存在してい る位置にインデントコードを縦方向に 書き込むことにより、縦方向に2等分 する。
現カーソルの位置を、右方向に1つずらす。
ワークバファWBの第2W(横幅)に新しくできた現カ
ーソルが存在するインデ ントブロックの横幅を記入する。
ワークバッファWBの第4W(カーソル)の値を1に変
更する。
ワークバッファWBのysw(インデントブロック先頭
桁)を新しくできたイン デントブロックの先頭桁番号に変更す る。
く注〉後述のインデント左移動キー人 力処理(ステップに822)では上記の説明で右を左と
すべて逆にしたものと同 じである。
上述の各ステップについてさらに説明する。
20.4.1   まず、データバッファの当該インデ
ントブロックを2等分することで縮小さ れたインデントブロックの作成を行 う。(縦方向に2等分したインデント ブロックの右側に今までそこにあった 情報が押し込められることになる。) 20.4.2   現カーソルを右方向へ1つずらす。
その位置が新しいインデントブロックの 先頭文字の位置になる。
20.4.3〜20.4.5 ワークバッファWBのHEADER部のパラメータを新
しいインデントブロックの パラメータに置き換える。
上述のステップ20,9のインデントブロック横拡大処
理について第31図を参照して説明する。
20.9.1   カーソルが存在しているインデント
ブロックの右側端を決定しているインデ ントマークをすべてスペースマークに 変更する。
20.9.2   ワークバッファWBの第2W(横幅
)に新しく拡大したインデントブロックの横 幅を記入する。
上記各ステップは以下のことを行う。
20.9.1   まず、データバッファのインデント
ブロックにおいて、右側端のインデント マークを取り除くことによりインデン トブロックの拡大を行う。
20゜9.2   ワークバッファWBの第2W(横幅
)の値を変更する。
上述の処理が終了すれば、ステップにBlのキー待ちに
移る。もし、ステップに819がNOであれば第11図
に示すステップKB21のインデント左キーか否かを判
断する処理に移る。このステップKB21でYESなら
ば、ステップKB22の入力処理に穆る。
かかるステップKB22の入力処理は第29図(A)の
ステップ20.1〜20.11において、上述した図の
説明文中の右と左とを入れ換え、かつ数字20を22に
置き換えたものと同等である。
また、インデントブロック横縮小処理は第30図におい
て、上述の図の説明文中の右と左とを入れ換え、かつ数
字20を22に置き換えたものと同等である。
さらに、インデントブロック横拡大処理について述べる
かかる処理は第32図に示すステップから成り、各ステ
ップについて説明する。
22.9.1   カーソルが存在しているインデント
ブロックの左側端を決定しているインデ ントマークをすべてスペースマークに 変更する。
22.9.2   ワークバッファWBの第2W(横幅
)に新しく拡大したインデントブロックの横 幅を記入する。
22゜9.3   ワークバッファWBの第5W(当該
インデントブロック先頭桁)を、新しく拡大 したインデントブロックの先頭桁に変 更する。
上記各ステップは以下の目的を実行する。
22.9.1   まず、データバッファにおける当該
インデントプロッタの左側端のインデン トマークを取除くことにより、インデ ントブロックの拡大を行う。
22.9.2〜22.9.3 ワークバッファWBの第2W(横幅)、およびワークバ
ッファWeの第5W(先頭桁)を新しいインデントブロ
ックに対 応する値に変更する。
上述の処理が終了すれば、ステップKBiのキー待ちに
Bす、ステップに821 Noであれば第11図に示す
ステップに823に移る。ステップにB23はインデン
ト罫線変換キーか否かの判別ステップである。
かかるステップに823でYESとなれば、ステップ2
4のインデント罫線変換キー入力処理に穆る。第33図
(A)はその入力処理の詳細を示すフローチャートであ
る。各ステップの内容を以下に示す。
24.1    カーソル位置セーブレジスタC5Rに
現カーソル位置、すなわちカーソルレジ スタCRに対応する値をセーブする。
24.2    現カーソルが存在する1行手前の行ま
でデータバッファの内容を順にすべて ワークバッファWB1.:りす。
24.3    現カーソルが存在する行のデータバッ
ファの内容を変換テーブル(第5図 (D))を参照して、インデントコードを罫線コードに
変換しながら、ワーク バッファWBに穆す。
上記の変換テーブルを参照するにあたっては、変換しよ
うとしているインデントコードの上下左右に隣接して存
在する文字コードあるいはインデントコードの配列状態
により、罫線パターンが異なることに注意しなければな
らない。具体的な対応は、第5図(D)に示す通りであ
る。
但し、上に隣接して存在するコードをチエツクするとき
は注意しなければならない。すなわち、周辺状況をチエ
ツクする範囲は最初にカーソルが存在した行以降に限る
ものとする。なお、最初にカーソルが存在した行は、カ
ーソル位置セーブレジスタC5Hにセーブされている。
24.4    カーソルレジスタの値に1行分の文字
数の値を加える。
245   カーソルレジスタの値が128を超えるな
らばステップ24.7に進む。超えないならばステップ
24.6に進む。
24.6    現カーソルが存在する行にインデント
コードが存在するならば、ステップ 24.3に戻る。存在しないならばステップ24,7に
進む。
24.7    データバッファDBの内容で、まだワ
ークバッファW8に移していないデータがあったならば
、そのデータをすべて順 にワークバッファに穆す。
24.8    ワークバッファに蓄えたデータをすべ
て順にデータバッファDBに戻す。
24.9    カーソル位置セーブレジスタに蓄えら
れたカーソル位置の情報に対応する値 をカーソルレジスタORに蓄える。
第33図(B)は、インデント罫線変換の具体例を示す
。上述の処理が終了したら、ステップにBlのキー待ち
にもどる。もし、ステップに823でNoであれば第1
1図に示すステップKB25に移る。ステップKB25
において罫線インデント変換キーが操作されたか否かを
判別する。もし、YESであればステップにB26に移
り、第34図に示すステップ26.lの処理を行う。
26.1    現カーソルが存在する行以降の罫線コ
ードをすべてインデントコードに変更 する。
上述のステップ26.lによりデータバッファ内におい
て、現カーソルが存在する行以降をすべて罫線コードか
らインデントコードへの変更を行う。
罫線コードは、第5図(A)に示すように、11種のコ
ード(β1〜β11)であるが、インデントコードは1
種のコード(α3)であり、一義的にインデントコード
を定めることができるため、容易にインデントコードへ
の変換を行うことができる。
上述の処理が終了すれば、ステップKBIのキー待ちと
なる。もし、ステップにB25でNOであれば、ステッ
プ笑11図に示すに827に穆る。ステップに827で
は、イニシャライズキーが操作されたか否かを判別する
。YESであればステップKB2Bのイニシャライズ処
理を行う。第35図はそのM制御手順を示す。
28.1    データバッファにすべてスペースコー
ドを埋める。
同時に、データバッファの左右マージ ン位置に相当する場所に左マージン コード、右マージンコードを埋め る。
上述のステップ28.1に従ってデータバッファに初期
値を設定することにより、CRT上に表示される文字列
のイニシャライズを行う。これにより、左右マージンが
表示装置CRT上に表示され、残りはすべてスペースが
表示される。すべての入力は、まずこのイニシャライズ
(INT)キーを押すことにより始めることができる。
上述の処理が終了すれば、ステップKBIのキー待ちと
なる。もし、ステップKB27でNOであれば第11図
に示すステップに829に移る。ステップにB29では
プリントキーが操作されたか否かを判別する。
もし、YESであれば、第36図に示すプリントキー処
理のステップ30.1 (第11図のステップKB30
)に移る。かかるステップ30.1では以下の処理を行
う。
30.1    データバッファの内容をプリンタに出
力する。上述の処理により、データ バッファの内容・をすべでプリントアウトする。このプ
リンタは縦横プリント の機能をもっているとなお望まし い。
上述の処理が終了すれば、ステップKBIのキー待ちと
なる。もし、ステップKB29がNOであれば第11図
に示すステップにB31に移る。ステップに831では
バックスペースキーBSが操作されたか否かを判別する
。もし、YESであれば、第37図(A) に示すバッ
クスペースキー処理のステップKB32に移る。
また、その際のバックスペース処理の具体例を第37図
(B)に示す。かかるステップKB32 (32,1〜
32.10 )では以下の処理を行う。
カーソルレジスタCRをデクリメントする。
カーソルレジスタCRがO以下であるならばステップ3
2.3に進む。0以下でないならばステップ32.4に
進む。
カーソルレジスタCRに128をセットする。次にリタ
ーンする。
カーソルが存在している位置に対応す るデータバッファ内データの内容が、 右マージンコードであるならば、リ ターンする。否ならばステップ32.5に進む。
カーソルが存在している位置に対応す るデータバッファ内データの内容が、 左マージンコード、インデントコード のいずれでもなければ、リターンす る。否ならば、ステップ32.6に進 む。
カーソルが第1行目に存在しているな 32.1 32.2 32.3 32.4 32.5 32.6 らば、リターンする。否ならば、ス テップ32.7に進む。
32.7    カーソルレジスタの値から1行分の文
字数の値(本実施例では16)を減じ る。このことによりカーソルを1行上 に上げる。
32.8    カーソルレジスタの値をインクリメン
トし、カーソルを1つ右にずらす。
32.9    カーソルが存在している位置に対応す
るデータバッファの内容がインデント コードまたは右マージンコードである ならば、ステップ32.10に進む。否ならば、ステッ
プ32.8に戻る。
32.10   カーソルレジスタの値を1減じること
により、カーソルを左方に1つずら す。
各ステップの意味をさらに述べる。
32.1    カーソルを左シフトするためにカーソ
ルレジスタCRから1減じる。
32.2〜32.3 もし、カーソルレジスタの値がO以下 であるなら、カーソルがデータバッ ファ枠内をはみ出すことになるので、 データバッファの末尾にカーソルがく るようにする。
32.4    もし、カーソルが右マージン位置に来
たとするならば、そのまま処理を終了 する。
32.5    カーソルの位置のデータがインデント
コードあるいは左マージンコードでな いならば処理を終了する。
32.6    カーソルが1行目に存在していたなら
ば、その上の行はもはや存在しないの で処理を終了する。
32.7〜32.10 今、カーソルが存在している前の行に おける該当インデントブロックの末尾 にカーソルを移動させる。
以上の処理を終了すると、ステップにB1のキー待ちに
なるが、もし、ステップに831でNOであるならば、
やはりステップKBIのキー待ちにもどる。
以上説明した本実施例にあフては、インデントブロック
(1つの編集の単位となるブロック)を自動的に縦方向
に拡大あるいは縮小を行う技術を提示しているが、この
ブロックの拡大または縮小を行うときに、オペレータに
その可否を選択させてもよい。もし、この選択機能をつ
けておくならば、自動的に拡大、縮小を行ってほしくな
いとき、すなわち枠組の大きさを固定させておきたいと
きに非常に有効となる。この選択機能を付加させること
は、選択キーのような選択手段およびこの選択手段(指
示手段)からの選択出力信号を処理部CPuで検出して
、その検出に基づいて拡大あるいは縮小を行うか否かを
判断する手段等(例えば、制御プログラム)を設けるこ
とにより実現できる。
また、本実施例においては、枠組内編集を行うときには
、インデントマーク等の枠組コードを用い、枠組が出来
上かった段階で枠組コートを罫線コードに変換し、罫線
付の文字列を得ることになる。そして、再びその文字列
に対し編集を行うときには、罫線コードを枠組コードに
変換してから行うものである。しかしながら、この罫線
コードと枠組コードとの取扱いを同一にすることによっ
て、罫線コードのまま入力編集を行うことができるよう
にしてもよい。あるいは、罫線コードを含む文字列に対
して入力編集処理を行なおうとするときに、自動的に一
旦枠組コードに変換して入力編集処理を行い、しかる後
に再び罫線コードに自動的に戻すようにすることにより
、操作者にとっては罫線コードのまま入力編集を行うこ
とができるようになる。
ざらに、本実施例ではインデントブロック縮小処理(ス
テップ16.6.5)において削除する行を、該当のイ
ンデントブロックの最終行としたが、必ずしも最終行で
ある必要はない。例えば、スペース以外の文字コードが
最終に存在する位置の次の行としてもよい。あるいは、
削除処理等によって新たに発生したスペース行としても
よい。
[発明の効果] 以上説明したように、本発明によれば、領域内における
文字入力に応じて、領域の大きさを自動変更させるか否
かをオペレータ側で指示することができるので、枠組を
固定させておきたいときに有効である。
【図面の簡単な説明】
第1図(A)〜(C)および第2図(^)〜(C)は文
字処理装置における枠組みの拡大および縮小の概念を説
明するための状態図、 第3図は本発明による文字処理装置の一実施例の構成を
示すブロック図、 第4図(八)および(B)はインデントブロックを説明
する説明図、 第5図(A)〜(D)はインデントマークと罫線パター
ンの変換を説明する説明図、 第6図(^)〜(C)は枠組みの変更を説明する説明図
、 第7図(A)およびCB)はインデントブロックの拡大
を示す説明図、 第8図(A1−(C)は枠組みの変更を説明する説明図
、 第9図(A)および(B)は枠組みの変更を説明する説
明図、 第10図(A)〜(D)はインデント罫線切換えを示す
説明図、 第11図は本発明実施例のキー処理を行う全体の制御手
順を示す流れ図、 第12図はキャリッジリターン処理を示す流れ図、 第13図はインデント入力処理を示す流れ図、第14図
はオーバライドキー入力処理を示す流れ図、 第15図は挿入キー入力処理を示す流れ図、第16図は
カーソルキー入力処理を示す流れ図、第17図(A)は
文字キー入力処理を示す流れ図、第17図(B)は文字
のオーバライド処理を示す説明図、 第18図(A)はインデントブロックセーブ処理を示す
流れ図、 第18図(B)はデータの流れを示す説明図、第19図
はオーバライド処理を示す流れ図、第20図は挿入処理
を示す流れ図、 第21図はインデントブロックリストア処理を示す流れ
図、 第22図(A)はインデントブロック拡大処理を示す流
れ図、 第22図(B)はデータの流れを示す説明図、第23図
(^)は行挿入処理を示す流れ図、第23図(B)はデ
ータの流れを示す説明図、第24図(A)はスペース行
移動処理を示す流れ図、 第24図(B)はデータの流れを示す説明図、第25図
はインデントブロック縮小処理を示す流れ図、 第26図(^)はデータバッファ書き込み処理を示す流
れ図、 第26図CB)はデータの流れを示す説明図、第27図
(A)は削除キー入力処理を示す流れ図、第27図CB
)は文字の削除のデータの流れを示す説明図、 第28図は削除処理を示す流れ図、 第29図(八)はインデント右移動キー入力処理を示す
流れ図、 第29図FB)はデータの流れを示す説明図、第29図
(C)はデータの流れを示す説明図、第30図はインデ
ントブロック横縮小処理を示す流れ図、 第31図はインデントブロック横拡大処理を示す流れ図
、 第32図はインデントブロック横拡大処理を示す流れ図
、 第33図(A)はインデント罫線変換キー入力処理を示
す流れ図、 第33図(B)はデータの流れを示す説明図、第34図
(A)は罫線インデント変換キー入力処理を示す流れ図
、 第34図(B)はデータの流れを示す説明図、第35図
はイニシャライズ処理を示す流れ図、第36図はプリン
トキー入力処理を示す流れ図、第37図(A)はバック
スペースキー処理の手順を示す流れ図、 第37図(B)はパックスペース処理を説明する説明図
である。 CPt1・・・処理部、 にB・・・キーボード、 ROM・・・制御メモリ、 RAM・・・メモリ、 WB・・・ワークバッファ、 DBuF・・・データバッファ、 CR・・・カーソルレジスタ、 PRT・・・プリンタ、 0WFG・・・オーバライドフラッグ、CRT・・・表
示装置、 NDL・・・新データ行数レジスタ、 CG−−キャラクタジェネレータ、 CRFG・・・キャリッジリターンフラッグ、C5R・
・・カーソルセーブレジスタ。 459− nDz 第10図 (A) 第11図 第18図 (A) 13図 第16図 15図 462− > Al;3Lす仁 第23図 第24図 (El) ↓ 第26回 464− −465− 第31図 第33図 (A) 第37図 (8)

Claims (1)

  1. 【特許請求の範囲】 1)文字を入力する入力手段と、 前記入力手段によって入力された文字を表示する表示手
    段と、 前記表示手段上の表示位置を指示するカーソルを前記入
    力手段からの文字の入力に応じて1文字分ずつ進めるカ
    ーソル制御手段と、 前記表示手段上に所望の領域を設定する領域設定手段と
    、 前記領域設定手段によって設定された領域内における前
    記文字の入力に応じて前記領域の大きさを変更する領域
    変更手段と、 前記文字の入力に応じて前記領域変更手段による領域の
    変更を行うか否かを指示する指示手段と を有したことを特徴とする文字処理装置。
JP1020230A 1989-01-30 1989-01-30 文字処理装置 Pending JPH038065A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1020230A JPH038065A (ja) 1989-01-30 1989-01-30 文字処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1020230A JPH038065A (ja) 1989-01-30 1989-01-30 文字処理装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP57011787A Division JPS58129676A (ja) 1982-01-29 1982-01-29 文字処理装置

Publications (1)

Publication Number Publication Date
JPH038065A true JPH038065A (ja) 1991-01-16

Family

ID=12021372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1020230A Pending JPH038065A (ja) 1989-01-30 1989-01-30 文字処理装置

Country Status (1)

Country Link
JP (1) JPH038065A (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5650432A (en) * 1979-10-01 1981-05-07 Canon Inc Character processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5650432A (en) * 1979-10-01 1981-05-07 Canon Inc Character processor

Similar Documents

Publication Publication Date Title
JPS6190261A (ja) 文書の色付編集装置
JPH0143338B2 (ja)
JPH038065A (ja) 文字処理装置
JPH0324701B2 (ja)
JPH0361197B2 (ja)
JPH0361198B2 (ja)
JPH0143339B2 (ja)
JPH0254588B2 (ja)
JPH0427586B2 (ja)
JPH0254589B2 (ja)
JPH0254590B2 (ja)
JPH0427585B2 (ja)
JPH04218865A (ja) 文字処理方法
JPH04218866A (ja) 文書処理装置
JP2698348B2 (ja) 文字処理装置
JPH0330054A (ja) 文書処理装置
JPH05250352A (ja) 文字処理方法
JPH0229853A (ja) 文書処理装置
JPH0330062A (ja) 文書処理装置
JPH04256065A (ja) 文書編集装置
JPS59180620A (ja) 文書作成装置
JPH0664447B2 (ja) 文字処理装置
JPH05298311A (ja) 文書作成装置及び方法
JPH0320858A (ja) 文書編集装置
JPH0244458A (ja) 文字処理装置