Qedit 5.8 for HP e3000

User Manual

Doc-To-Help Standard Manual


 

Program and manual copyright © 1977-2005 Robelle Solutions Technology Inc.

Permission is granted to reprint this document (but not for profit), provided that copyright notice is given.

Updated Friday, August 08, 2008

 

 

Qedit and Suprtool are trademarks of Robelle Solutions Technology Inc. Windows is a trademark of Microsoft Corporation. Other product and company names mentioned herein may be the trademarks of their respective owners.

I

Robelle Solutions Technology Inc.

7360 – 137 Street, Suite 372

Surrey, B.C. Canada V3W 1A3

Phone:    604.501.2001

Fax:         604.501.2003

E-mail:    sales@robelle.com

E-mail:    support@robelle.com

Web:      www.robelle.com

 


Contents

 

Welcome to Qedit 1

Introduction. 1

Documentation. 2

Change Notice. 2

Printed Documentation. 2

Documentation Download. 2

Other Documentation. 2

Printdoc Program.. 2

Other Manuals of Interest 2

Customer Support 3

Robelle Newsletter 3

QLIB and Bonus Contributed Software. 3

Notation. 4

New to Qedit 5.8. 5

Installing Qedit 7

General Installation Notes. 7

Who Should Use These Instructions?. 7

Summary of Installation Steps. 7

Qedit Compiler Interfaces. 7

Important Note About Passwords. 8

STREAMX Users. 8

Step 1: Install Qedit 8

Step 2: Install QLIB and Bonus Programs. 9

Building the Spell Dictionary. 10

Step 3: Install NM Compiler Interface. 10

Installing the Interface. 10

Compiling Instructions. 11

Step 4: Install CM Compiler Interface. 11

Choosing a CM Installation Method. 11

Integrating CM Compiler Changes. 11

Isolating CM Compiler Changes. 12

Step 5: Saving Disc Space. 12

Purging Obsolete Files. 12

Minimal Set of Files. 12

Moving Qedit to Another Account 13

Moving All the Files. 13

Redirecting the File Names. 14

Moving a "Hooked" Qedit 14

Running the MPEXHOOKed Qedit 14

Removing the Compiler Interface. 15

Removing the NM Interface. 15

Removing the Integral CM Interface. 15

Removing the Isolated CM Interface. 16

Getting a Quick Start with HP Full-Screen Editing   17

Introduction. 17

Starting Visual Mode. 18

Screen Layout 19

Home Line. 19

Status Line. 19

Text Lines. 19

Template Line. 19

Special Indicator Columns. 20

Using Your Keyboard. 20

Moving the Cursor 20

Editing the Text Lines. 20

Control Functions. 21

Reflection for DOS Keyboards. 21

Other PC Keyboards. 22

Function Keys. 22

Browsing Through Your File. 23

Cut-and-Paste. 24

Cutting Operations. 24

Pasting Operations. 25

Resetting Cut-and-Paste. 25

Copying a Block of Text 25

Cut-and-Paste Between Files. 26

Dividing and Gluing Operations. 26

Dividing Lines in Visual Mode. 26

Gluing Lines in Visual Mode. 27

Excluding Lines From Visual Mode Display. 27

Justifying Lines in Visual Mode. 28

Renumbering Lines. 28

Inserting Blank Lines. 28

Hold Files. 28

Marking Changes Without Using Line Numbers. 28

Paste from a Non-Qedit File. 29

Home Line Commands. 29

Finding Strings. 29

Changing Strings. 30

Help on Visual Mode. 30

Compile, Link, and Run. 30

Formatting Paragraphs. 31

Undoing Changes in Visual Mode. 31

Refreshing the Screen. 31

Other Line Mode Commands. 31

Truncated Home Line. 32

Exit from Visual 32

Getting a Quick Start with Line Mode Editing   33

Introduction. 33

Adding Lines to a File. 33

Looking at the File. 34

Browsing the File. 35

Searching the File. 35

Editing Lines. 36

Global Changes. 37

Copying Lines. 38

Moving Lines. 38

Deleting Lines. 39

Help Command. 39

Saving the File. 40

Open and Shut for Instant Access. 40

Running Qedit under MPE   41

Introduction. 41

Edit in Line Mode or in Full-Screen Mode. 41

Edit Several Files at Once. 42

Qeditmgr Configuration Files. 42

Limiting Compile Priority. 43

Default Set Commands. 43

Using Qedit in Batch. 43

Summary of Parm= Values. 44

From the Posix Shell 44

Exit and Entry Options. 44

Exit with Verify. 45

Info= First File to Edit 45

Random Name for Primary Scratch File. 45

"Discard Changes?" on Exit 45

Info= "-p 99" Specifies Parm Value. 45

Info= "-c cmdstring". 46

Parm 512 to Edit a Single File. 46

Info= An Empty File to Fill 47

Info= Temporary File. 47

Info= Can Create New Files. 47

Parm Values to Suspend or Not 47

Info= Commands Only. 48

Basicentry Option. 48

JCWs That Drive Qedit 49

RCRTMODEL JCW... 49

RPCVERSION JCW... 50

RCRTWIDTH JCW... 51

RCRTSTRAPSGH for Handshaking. 51

RLABELDEFAULT JCW... 53

QEDITMGRTRACE JCW... 53

QEDPARMBITS JCW... 53

QEDCURWFILE Variable. 54

QEDSTOREDPWD and QEDPROMPTEDPWD Variables. 54

Qedit for Microsoft Windows  55

Introduction. 55

Server Process. 55

Logon Sequence. 55

QEDSERVMODE JCW... 56

Log Files. 56

Qedit Issues and Solutions  59

Running Qedit with Reflection. 59

RPCVERSION JCW... 59

Using a Command File to Start Up. 59

Alt-Y vs. :Reflect 60

Qedit and Reflection File Transfers. 60

Form Feed Causing Return/Line Feed. 61

Typeahead and Visual Mode. 61

Completion Codes. 61

Controlling the PC.. 62

Accidental Exit from Reflection. 62

Changing the Exit Keystroke. 62

Running Qedit in MPE/iX.. 63

Unresolved Externals on MPE/iX 4.0. 63

Compiling on MPE/iX.. 63

XDB: the Symbolic Debugger 63

Command Files and Variables. 64

Visual Mode. 64

EOF vs. LIMIT.. 64

Disc Space for Files and Xltrim.. 64

Extents. 64

Qedit as the HPDesk Editor 65

Configuring HPDesk. 65

Configuring Qedit in HPDesk. 65

DeskQed. 65

Getting Programs to Read Qedit Files. 66

Qinput 67

Qcompxl 67

Qeditaccess Subroutine. 67

Qedify. 67

Qedify and $Include. 68

Editing Wide Files. 69

Using the New Command. 69

Using the Text Command. 69

Lines, Strings and Ranges. 70

Using Qedit with MPE Programming Languages  73

Introduction. 73

Editerr: Trapping Compiler Errors. 73

Limitations and Restrictions. 74

Linking PowerHouse with Qedit 75

Invoking PowerHouse from Qedit 75

Configuring Qedit as Your Editor 76

Editing PowerHouse Subfiles. 77

COBOL. 77

Selecting a Compiler 77

Sequence Numbers and Comments. 77

Tagging Source Changes. 78

Copylib Members. 78

Trapping Syntax Errors. 78

FORTRAN.. 78

Pascal 79

C Language. 79

SPL. 80

TRANSACT.. 80

RPG.. 80

BASIC.. 81

Segmenter 81

Common Uses of Qedit 83

Introduction. 83

Qedit as Word Processor 83

QNote UDC for Occasional Memos. 83

Justify Capability. 83

Check Spelling. 84

Prose: A Text Processor 85

Using TDP from within Qedit 86

Qedit as a File Utility. 86

Sorting a Range of Lines. 86

Searching Groups of Files for Strings. 86

Editing Data Files. 87

Editing Program Files. 89

Qedit as an Operations Tool 89

Editing Stream Files. 89

Native-Mode Output Spool Files. 90

Editing Bells, Tabs and Escapes. 90

Aborting All Users to Back Up. 90

Qedit Commands  93

Introduction. 93

General Notes. 93

Abbreviations. 93

Uppercase or Lowercase. 93

Multiple Commands per Line. 94

Comments on Command Lines. 94

STREAMX Warning. 94

Stopping Commands with Control-Y.. 95

Implicit Commands. 95

Function Keys. 95

Command Files and UDCs. 96

MPE Commands. 96

Differences from MPE. 96

Calculator Commands. 97

QEDITCOUNT JCW... 97

QEDCURWFILE Variable. 97

External Program Commands. 97

:Activate Command [AC/:A] 98

Add Command [A] 99

Add (Adding New Lines) 99

Add (Adding a String as a Line) 101

Add (Copying Lines within a File) 101

Add (Moving Lines within a File) 102

Add (Copying Lines Between Files) 103

Append Command [AP] 105

Backward Command [BA/F5] 106

Before Command [B] 107

:Beginfile and :Endfile Commands. 109

Change Command [C] 110

Change (Changing Strings) 110

Change (Changing Columns) 113

Close Command [CL] 114

Colcopy Command  [COL] 115

Colmove Command  [COLM] 118

:Compile Command [CO/:C] 121

Delete Command [D] 124

Destroy Command [DES/:D] 126

:Display Command [DISPLAY] 127

Divide Command [DI] 128

:Do Command [DO] 129

:Editerror Command [EDITERROR] 130

:Escape Command [ESCAPE] 132

Exit Command [E/F8] 133

Find Command [F/F4] 134

Findup Command [FINDU/F3] 136

Form Command [FORM] 137

Forward Command [FO/F6] 138

Garbage Command [GAR] 139

Glue Command [G] 140

Help Command [H/?] 141

Hold Command [HO] 142

:If, :Endif, :Else, :Elseif Commands. 143

Justify Command [J] 144

Keep Command [K] 150

:Kill Command [KI/:K] 154

List Command [L] 155

:Listredo Command [LISTREDO/F7] 167

:Listundo Command [LISTU] 168

Lsort Command [LS] 169

Merge Command [ME] 170

Modify Command [M] 172

New Command [N] 181

Open Command [O] 182

:Pause Command [PAUSE] 186

:Prep Command [PREP/:P] 187

Proc Command [P] 189

Q Command [Q] 191

/Qedit Command. 192

:Qhelp Command [QHELP] 193

:Redo Command [REDO] 194

:Reflect Command [REFLECT] 196

Renumber Command [REN] 198

Replace Command [R] 199

:Return Command [RETURN] 201

:Run Command [RU/:R] 202

Run, Implied. 205

:Segmenter Command [SEG/:S] 206

Set Command [S] 207

Account 209

Alias. 209

Autocont 211

Check. 211

Decimal 212

DL size. 212

Editinput 212

Expandtabs. 213

Extentsize. 213

Extprog. 214

Filename. 214

FORTRAN.. 215

HFS. 215

Halfbright 216

Hints. 216

Hppath. 216

Increment 216

Interactive. 217

Justify. 217

Keep. 217

Language. 222

Left 224

Length. 224

Lib. 224

Limits. 224

List 225

Maxdata. 225

Modify. 226

Open. 227

Pattern. 228

Priority. 228

Prompt 229

Redo. 229

Right 230

RL file name. 230

Shift 231

Spell 231

Statistics. 232

Stringdelimiters. 232

Suspend. 233

Tabs. 233

Term.. 234

Text 235

Totals. 236

UDC.. 236

Undo. 237

Varsub. 237

Visual 238

Warnings. 248

Whichcomp. 248

Window.. 249

Work. 250

Wraparound. 251

X.. 252

YNone. 255

Zip. 255

Shut Command [SH] 257

Spell Command [SP] 258

:Stream Command [STREAM] 260

:Tdpfinal and :Tdpdraft Commands. 261

Text Command [T] 262

Undo Command [UN] 269

Up Command [UP/F2] 271

Use Command [U] 272

Verify Command [V] 273

Visual Command [VI/F1] 274

:While and :Endwhile Commands. 275

Words Command [W] 276

:Xltrim Command [XLTRIM] 277

Zave Command [Z] 278

ZZ Command. 279

User Defined Commands. 280

Command Files. 285

Calculator Command [=] 288

POSIX Commands [!] 291

Troubleshooting and Error Messages  293

Introduction. 293

Messages. 293

System Errors. 295

Quit Errors. 295

Errors in Visual 296

Using Visual with X.25. 296

Using Visual on MPE/iX.. 296

Accidental Invocation of MPE/iX CI 296

Using Visual on HP-UX.. 297

Terminals Supported by Visual 297

Problems with 700/9x Terminals. 297

Visual Error Messages. 297

Analyzing Compiler Problems. 299

QCOMPXLTRACE JCW... 299

Control-Y and NM Compiles. 300

How to Bypass Qcompxl 300

Problems with HP's C Compiler 300

Unresolved External Reference. 300

Illegal Characters. 300

Pascal/V Compiler Stack Overflow.. 300

File Formats  303

Introduction. 303

Qedit Workfiles. 303

Original Format Workfiles. 303

Jumbo Workfiles. 304

External Files. 305

Error Files for Editerror 307

Prefix Characters & Data. 307

User Routines  309

Introduction. 309

Wide Lines and User Procedures. 309

"Init" Interface Procedure. 310

"Com" Interface Procedure. 311

"Add" Interface Procedure. 312

"Exit" Interface Procedure. 312

Installing Your Interface Procedures. 313

Alternate Activation. 313

The Modify User Hook. 314

Writing a User Procedure. 314

DL Space. 315

Passing Procspace Values. 315

Communication Flags for User Code. 315

Qcopy  317

Introduction. 317

Accessing Qcopy. 317

Qcopy Documentation. 317

Qedit-Compatible Software Tools  319

Introduction. 319

Compare/iX.. 319

OMNIDEX.. 319

Adager 320

CCS - Corporate Computer Systems. 320

Reflection. 320

ROBOT.. 320

PowerHouse. 320

Splash for Native-Mode SPL. 321

Prose Text Formatter 321

Spell: Spelling Checker 321

Qhelp Help System.. 321

TRANSACT.. 321

MPEX and STREAMX.. 321

SCOMPARE and ANALYZER.. 322

Xpedit Full-Screen Editor 322

Nuggets. 322

Fantasia. 323

TDP. 323

Network Engine. 323

Regular Expressions  325

Introduction. 325

Metacharacters. 325

Character Class. 327

Escape Character 329

Escaped Sequences in Regular Expressions. 329

Backreferences in Regular Expressions. 330

Escaped Characters in Replacement String. 331

Qedit Glossary  333

Introduction. 333

Terms. 333

Abbreviating. 333

Batch. 333

Calculator 334

Column. 334

Command. 334

Control Character 335

Copylib Members. 335

CRT.. 336

Current Line. 336

Defaults. 336

External File. 336

File Names. 337

Full-Screen Editing. 337

Hold File. 338

J Option. 338

Jumbo Files. 338

Keep File. 338

Language. 338

Left 339

Length. 339

Line. 339

Linenum.. 339

Looping. 340

Margins. 340

Member 340

Memory Lock. 341

MPE Command. 341

Patterns. 341

Procedure. 342

Qeditscr 342

Quiet-Q Option. 342

Range. 343

Rangelist 343

Relative Line Numbers. 344

Right 345

Shifting. 345

Size. 345

Spool Files. 345

$Stdin / $Stdinx. 346

$Stdlist 346

String. 346

Tab. 346

Template-T Option. 347

UDC.. 347

Visual Editing. 347

Window.. 347

Workfile. 348

Special Characters. 348

? Means Help, Nonprinting Characters, Alphanumeric (in Patterns) or Optional (in Regexp) 349

$ Means Hex, Standard File, Memory Lock, List Option, Previous File or End-Of-Line (in Regexp) 349

^ Means Findup, Control-Char, Start-of-line (in Regexp) or Negate (in Regexp) 350

. Means Nonprinting, Reset, Decimal Point or Any Character (in Regexp) 350

! Means Posix Command or Too Long. 350

% Means Octal or String. 351

* Means Current, Refresh, Multiply or Quantifier (in Regexp) 351

\ Means Previous, String, Literal Match (in Regexp) or Special Characters (in Regexp) 352

/ Means Prompt, Range Delimiter, Stop, Exit, or Divide. 352

[ Means FIRST, [default] or Start Class (in Regexp) 353

] Means LAST or End Class (in Regexp) 353

{ } Are for Comments or Indentation. 353

@ Means ALL. 353

& Means Literal Match or Continue MPE Command. 354

: Means MPE or String. 354

; Means Multiple Commands. 354

, Means a List 355

= Means Copy or Calculate. 355

< Means Move, I/O Redirection or Backward Page. 355

> Means Forward Page, I/O Redirection, Modify or Qhelp. 355

" Means String. 356

( Means Start Parameter, Member, Command or Subpattern (in Regexp) 356

) Means End Parameter, Member, Command or Subpattern (in Regexp) 356

+ Means Ahead Some Lines, Add or Quantifier (in Regexp) 356

- Means Back Some Lines, Minus or Range (in Regexp) 357

# Means Numeric Pattern, Spool File or Previous Result 357

~ Means Spaces (Pattern), Recent Page or Field. 357


Welcome to Qedit

Welcome to Qedit, the fast, full-screen text editor for MPE and HP-UX. To get into Qedit, enter this MPE command:

:run qedit.pub.robelle

Qedit version 5.8 has screen-editing, function keys and commands:

Commands:

Add

FINDUp

Open

ZZ

Add(=copy)

FORM

Proc

%ext

Add(<move)

FORward

Q

shell

Add(=file)

GARbage

REDO

 

Append

Glue

RENum

 

BAckward

Help

Replace

 

Before

HOld

Set

 

Change

Justify

SHut

 

COLcopy

Keep

SPell

 

COLMove

List

Text

 

Delete

LISTREDO

UNDo

COmp

DEStroy

LISTUndo

Use

RUN

Divide

LSort

Verify

Mpe

DO

MErge

VIsual

Udc

Exit

Modify

Words

Cmdfile

Find

New

Zave

=calc

Function Keys:

F1 Upd Next/Visual

F2 Roll Up

F3 Findup

F4 Find

F5 Backward

F6 Forward

F7 Do ===>
/LISTREDO

F8 Exit

 

Qedit comes with a User Manual and a Change Notice. You may have received printed copies of these. If you wish to have printed copies, you can order them by filling out the form on our web site.

Change Notice

For a complete description of the latest changes made to Qedit, the installation instructions, and any compatibility issues, see the change notice that was included with the release.

Printed Documentation

The latest user manual and change notice are available in Adobe PDF format. If you do not already have the Adobe Acrobat reader, you can get a copy from http://www.adobe.com/prodindex/acrobat/readstep.html. If you wish to have printed copies, you can order them by filling out the form on our web site.

Documentation Download

You can download the files from the Robelle web site at http://www.robelle.com/library/manuals/.

In addition to the Qedit User Manual and Qedit Change notice, there are other  manuals that come with Qedit. Manuals for bonus programs and the contributed library are available in Robelle's Prose format, not in PDF format. They are found  in the Robelle account on the HP e3000, and are printed using the Printdoc  program. Printdoc prints the manual on your printer, whether LaserJet or line printer.

Printdoc Program

To print them on your printer, whether LaserJet or line printer, run the Printdoc program.

:run printdoc.pub.robelle

Printdoc is menu-driven, and very easy to use. Printdoc asks you for information, and if you are not sure of your answer, you can ask for help by typing a question mark (?) and pressing the Return key. There are two steps for printing a manual: first, choose one of the manuals on the menu; second, select a printer. Printdoc supports most types of LaserJet printers and regular line printers.

Other Manuals of Interest

You may want to print at least one copy of these manuals:

prose.qlibdoc.robelle     {text formatter}

spell.doc.robelle         {Bonus spelling checker}

contents.qlibdoc.robelle  {contributed library}

howmessy.doc.robelle      {Bonus database analyzer}

You can print any Robelle document if you know the file name. If you wish, you can include the file name in the :Run command. For example, to print the Spell User Manual, type

:run printdoc.pub.robelle;info="spell.doc.robelle"

When you purchase Qedit, customer support is included for the first year. After the first year, there is a yearly Maintenance fee. If you are a Right-to-Copy user at a branch of a larger company, you have two options. If you pay only the one-time Extra CPU surcharge, then you must obtain your support from your own corporate resources. If you wish to have support at your own location, you may obtain this by also paying the regular Maintenance fee. With this yearly support for Qedit, you are entitled to call with questions. Service also supplies you with a yearly update to Qedit.

Do you receive a copy of What's Up, DOCumentation?, our regular news memo about Robelle, MPE, and HP-UX? We distribute our news memos only to sites with current service. Your copy may be going to your corporate headquarters.

The lastest newsletter is also available from our Web site at www.robelle.com/newsletter/.

Qedit comes with an array of contributed software in the QLIB library (in the QLIB groups of the Robelle account). The tools in QLIB, such as Prose to print manuals, can be extremely handy. As well, your Robelle license may entitle you to receive our Bonus programs: Compare/iX, a file comparison tool, HowMessy, an analyzer for database efficiency, Select, a menu processor, Spell, an English spelling checker, and Xpedit, a VPLUS text editor.

If you have the Bonus programs, you may only use them on appropriately licensed CPUs; you may not give a Bonus program away. However, QLIB programs may be used on any CPU and given away freely.

To browse through the Robelle account, including QLIB, use our Select "menu" program. Select allows you to run programs, get help, and print manuals, all without knowing any MPE commands.

:run select.pub.robelle,qlib

Compare/iX compares two text files (Keep or Qedit format) and prints out the differences. The basic comparison unit is a line. Compare/iX identifies three types of differences: lines that are in the first file but not in the second; lines that are in the second file but not in the first; and lines that are in both files, but don't match. There is no Classic version of Compare/iX for MPE V.

HowMessy analyzes a database and prints a report on its internal efficiency, 10 to 20 times faster than similar programs. To access HowMessy, log on as the database creator in the same group as the database and enter:

:file loadrept;dev=lp;cctl

:run howmessy.pub.robelle

Enter database:CUSTMR

Spell is a spelling checker that reads a file and produces a list of misspelled words. Spell comes with an 80,000 word English dictionary, and you can add your own words into global or local auxiliary dictionaries. Spell reads Qedit files, and has an option to generate an error file that is compatible with the :Editerror command.

This manual uses a standard notation to describe commands. Here is a sample definition:

                VERIFY  [ @ | ALL ]

                [ keyword ...]

1.        UPPERCASE - If the commands and keywords are shown in uppercase characters in a syntax statement, they must be entered in the order shown (example: ALL). However, you can enter the characters in either uppercase or lowercase.

2.        Lowercase, highlighted - These are "variables" to be filled in by the user (example: keyword). The variables may be highlighted by underlining or italics. Each such "variable" is defined elsewhere (see the "Qedit Glossary" on page 341 when you have trouble). In the Help command, highlighting is not available, so these variables appear simply in lowercase.

3.        Brackets - enclose optional fields (example: [ALL]).

4.        Braces - enclose comments which are not part of the command. However, braces and comments are accepted in actual Qedit commands.
/listq filename {Q means without line numbers}

5.        Up lines - separate alternatives from which you select (example: SET CHECK [ON|OFF]). The choices are sometimes listed on several lines without "up lines".

6.        Dot-dot-dot (...) - indicates that the variable may be repeated many times in the command.

7.        Other special characters - literal symbols that must appear in the command as they appear in the manual (for example, "=" in Add linenum = rangelist).

In examples, there is an implied Return key at the end of each line.

Control characters, generated by holding down Control while striking another key, are either spelled out (e.g., Control-H) or abbreviated with a circumflex prefix (e.g., ^H).

When Qedit asks you a question, the default answer is shown in [brackets]. The default is the answer that Qedit will assume if you press only the Return key.

Here are a few highlights of the new features in Qedit. For a complete list of changes, plus details on how to take advantage of all the new features, see the change notice that accompanied your tape. See the "Documentation" section on page 2 for instructions on how to print the change notice. All changes discussed in the change notice have been incorporated into the user manual and help file, but the change notice gives you everything new in one convenient document.

This section describes the latest enhancements to host-based Qedit and the server portion of Qedit for Windows. For information about enhancements to the client portion of Qedit for Windows, see the Qedit for Windows User Manual.

 

·         Text command. The text command would fail with Integer Divide by Zero error when texting in some variable length or bytestream files.

·         Regular Expressions. Qedit would improperly report the error "String longer than maximum allowed" if the expression specified is longer than the window of the rangelist.


Installing Qedit

Here we describe how to install and configure Qedit, and how to integrate it with your compiler tools. The following are general notes about installing Qedit.

Who Should Use These Instructions?

Use the following installation instructions if you have just purchased Qedit and are installing it for the first time. If you already have Qedit on your system, and are installing an update or pre-release of Qedit, you will find specific installation instructions in the change notice included with your tape.

TRIAL USERS: Refer to the Robelle Trial Handbook that accompanied your trial tape.

Summary of Installation Steps

To install Qedit, follow these steps:

1.        Install Qedit

2.        Install the QLIB and/or Bonus programs

3.        Fix the NM compilers (XL only)

4.        Fix the MPE V compilers (both systems)

5.        Save disc space (optional)

Qedit Compiler Interfaces

Qedit edits compact files of a special format called workfiles. In order to be able to compile these files without doing a Keep command, you must "fix" the MPE compilers. This applies to the Classic 3000 compilers (CM), which might exist on either an MPE V or MPE/iX system, and the NM compilers on MPE/iX only. The methods and installation steps are quite different between the CM and NM Qedit compiler interfaces.

Many third-party tools either read Qedit files already (e.g., PowerHouse, MPEX) or can be altered to read Qedit files (techniques for doing this are discussed here).

Important Note About Passwords

None of the jobs that we supply have passwords in them. Before streaming a job, you may have to add your system's passwords to the first line. Users of MPE XL version 3.0 and higher do not have to do this because the operating system prompts for missing passwords. The same is true for some MPE V users who have security software that inserts passwords. Most MPE V users have to edit the jobs. For example, if the system manager logon password is Qwerty, you would do the following:

:editor

HP32201A.07.22 EDIT/3000

/text robelle.job.robelle

FILE UNNUMBERED

/modify 1

MODIFY     1

!job robelle,manager.sys,pub;hipri

                        i/qwerty

!job robelle,manager.sys/qwerty,pub;hipri

 

/keep robtemp

/exit

END OF SUBSYSTEM

:stream robtemp

:purge robtemp

STREAMX Users

Users of STREAMX, a part of SECURITY/3000 from VESOFT Inc., must set a Job Control Word before streaming jobs. This step prevents STREAMX from generating an error if the Robelle account does not yet exist. For example,

:setjcw streamxtempnonest 1

:stream robelle.job.robelle

This step requires three separate procedures: restoring all Robelle files from tape to disc, building (or upgrading) the Robelle account using the job stream that we provide, and streaming the installation job stream. All these procedures can easily be accomplished if you log on as Manager.Sys.

Restore Files

First, you have to restore all the Robelle files from tape.

:hello manager.sys                 {log on as system manager}

:file rtape;dev=tape               {mount Robelle tape}

:restore *rtape; @.@.@; create     {=reply on the console}

Check the :Restore listing for files that could not be restored because they were busy for any of the following reasons: someone was using them, they are held as suspended son processes (menu system), they are allocated, or someone was backing them up! Chase away any users and deallocate any busy programs. Then try the :Restore again.

Create/Update Robelle Account

You must build (or upgrade) the Robelle account with the job stream we provide. Stream the job that builds and updates the Robelle account.

:stream robelle.job.robelle

If the Robelle account already exists on your system, the installation job preserves the current passwords.

If the account does not exist, it is created with the password XXXX. The Mgr.Robelle user does not have a password. You should change the passwords to something that will be hard for outsiders to guess.

:altacct robelle;pass={robelle account password}

:altuser mgr.robelle;pass={mgr.robelle user password}

Please note that during installation, we add OP capability to the Robelle account. When the Qedit installation is complete, you can, if you wish, remove the OP capability.

File Names

The Qedit program files are located in the Pub group of the Robelle account. These are the names of the various files:

Qeditnm

 

NM Qedit program

Qeditcm

Qeditpm

CM Qedit programs

Qcompxl

 

NM compiler interface

Qedify

Qcompusl

CM compiler interface

Qloadxl

 

NM Qedit options

Ederrnm

Ederrcm

:Editerror support

Qmap

 

reformat MPE V PMAP

 

Install Program Files

Our installation job installs Qedit. No one can be using these programs when you do the installation. Warn people not to use Qedit for a while, and then stream our installation job:

:hello mgr.robelle

:warn @;please exit from Qedit NOW!

 

:stream install.qeditjob   {supply passwords}

Check the installation job $stdlist. If anyone was using Qedit or attempting to back it up, the job will fail. Chase away any users, ensure that backup is not in progress, then stream the installation job again.

The installation job renames your current versions of Qedit to the PubOld group of the Robelle account. If you need to move these versions back into production, use the Previous.QeditJob job stream.

You can now access Qedit by entering

:run Qedit.pub.robelle

If you wish to print manuals, move Qedit to another account, read on in this chapter for instructions.

Qedit comes with an array of contributed software in the QLIB library (in the QLIB groups of the Robelle account). QLIB programs may be used on any CPUs and given away freely. Your Robelle license may also entitle you to receive our Bonus programs: Compare/iX, HowMessy, Select, Spell, and Xpedit. These programs reside in the Pub group of the Robelle account. Bonus programs can only be used on authorized machines, and you may not distribute them to your friends.

If you received Bonus programs with this version of Qedit, use the job stream called Bonus.Job.Robelle to install both the QLIB and Bonus programs. If you did not receive Bonus programs, use the job stream Qlib.Job.Robelle to install the QLIB programs. If you skip this step, you may end up running old versions of these programs.

:hello mgr.robelle

:stream bonus.job.robelle       {or Qlib.Job.Robelle}

Building the Spell Dictionary

The Spell Bonus program requires an additional install job to build its main dictionary. This job is required if you want to use Spell, and the Spell and Words commands in Qedit. By default, the American spellings are used. To use British spellings, modify the line that sets the SpellAmerican JCW so that the JCW is set to False. This job stream could take 30 to 60 minutes to complete; there is no reason to wait for it to finish before going on to the next step.

:run qedit.pub.robelle          {or use :Editor}

/text dictmain.spjob

/modify "setjcw SpellAmerican"  {for British spelling,     }

/keep robtemp                   {      change True to False}

/exit

:stream robtemp

:purge robtemp

See the Spell user manual for more information on using Spell.

On MPE/iX, if you use any NM compilers, you will want to install the new NM compiler interface. If you still use the CM compilers as well, you will want to install that compiler interface too, as described under step 4.

Installing the Interface

Assuming that you have Restored the Robelle files onto your system and that you have not done this step before, stream Savecmdf.Qeditjob to make backup copies of the existing HP command files in the Stdcmd.Sys group. You need to know the Manager.Sys password:

:stream savecmdf.qeditjob.robelle {wait for it to finish}

:listf @.stdcmd.sys

Then stream Qcompxl.Qeditjob to make changes to the Pub.Sys compiler command files.

:stream qcompxl.qeditjob.robelle

This stream makes the following changes to the files:

1.        Change the run of the compiler program to

;xl ="qcompxl.pubnew.robelle, qcompxl.pub.robelle",

2.        Add ";shr" to the File commands for the text and master files.

Compiling Instructions

At any point, either within Qedit or at the MPE/iX prompt, you now should be able to compile a Qedit file or a Keep file, just by invoking the normal command file:

:pasxl source                {from MPE}

:run qedit.pub.robelle

/pasxl source                {from Qedit}

Within Qedit, you can specify "*" for the current workfile:

:run qedit.pub.robelle

/text source

/pasxl *

/exit

:pasxl qeditscr

When installing Qedit on MPE/iX, you may have to install the NM compiler interface (described earlier) and the CM compiler interface (described here). MPE V, on the other hand, has only the original "CM" compilers to worry about. After Restoring the files from tape, you have to choose an installation method: integral or isolated.

Choosing a CM Installation Method

There are two methods of fixing the compilers on your system: integral into Pub.Sys or isolated in the Robelle account. The isolated method is best for new or trial-period users, because it is faster to install and easier to remove later. You can start with the isolated method and convert easily to the integral method later.

Integral Method. The compilers in Pub.Sys are "fixed" directly and a segment is added to the System SL. The standard :Cobol and :Pascal commands of MPE will then compile Qedit workfiles. :Sysdump is used to make a new cold load tape for the next time you must boot the system.

Isolated Method. The MPE compilers are copied into the Q.Robelle group and the original compilers are left in the Pub.Sys group. No code is added to the System SL. Because the "Qedit" compilers are not in Pub.Sys, you cannot compile Qedit workfiles except from within Qedit.

Integrating CM Compiler Changes

The job stream Qeditj1.Qeditjob.Robelle makes integral compiler fixes. Use it either to update the fixes to a new version or to re-install the fixes after a MPE update from HP. Because this job modifies the compiler program files in Pub.Sys, you should :Store @.Pub.Sys before starting and save the tape. You need another small tape for a new cold load tape.

Ensure that no one compiles until the installation is complete. Stop all jobs and send an operator warning. Log on as Manager.Sys, modify the first line of the Qeditj1 job to include the passwords, then :Stream the job.

:stream qeditj1.qeditjob.robelle

The job runs Qedify.Pub.Robelle to update the compilers in Pub.Sys and install nonprivileged hooks into them, so that they can access Qedit workfiles. The job adds a code segment from Qcompusl.Pub.Robelle into Sl.Pub.Sys and then requests a tape mount for a new cold load tape.

Mount a tape with a write ring and :Reply. Save this tape and use it for any future cold loads. The CM compiler interface is now installed. Compiles done inside or outside Qedit work on either Qedit workfiles or on regular Keep files.

Isolating CM Compiler Changes

The job stream Qeditj1a.Qeditjob.Robelle fixes the compilers, but isolates the changes in the Q.Robelle group. Ensure that no one compiles until the installation is complete. Stop all jobs and send an operator warning. Modify the first line of Qeditj1a to include the Robelle password, then stream the job:

:stream qeditj1a.qeditjob.robelle

The job uses Qedify.Pub.Robelle to copy the compilers from Pub.Sys to the Q.Robelle group, then "fix" them to read Qedit files. The original compilers in the Pub.Sys group are not modified. Once this step is completed you can use the CM compilers on Qedit files from within Qedit, but not at the MPE prompt.

There may be obsolete or unnecessary files in the Robelle account that you can remove to save disc space.

Purging Obsolete Files

If you have been a Qedit user for several years, you may have obsolete files in the Robelle account. For example, the file Qapply.Doc.Robelle is an older version of part of the Qedit User Manual. It should be purged.

To remove all obsolete files that were part of the Qedit product, stream the job Obsolete.Qeditjob.Robelle.

Minimal Set of Files

If you are extremely short of disc space, you can purge many files in the Robelle account after you complete all installation steps. The only files you must have to run Qedit are those listed below. Of course, if you have other Robelle products such as Suprtool, you do not want to purge the files needed for them, which are listed in their User Manuals.

Filename

Purpose

qedit.pub.robelle

 

qloadxl.pub.robelle

optional NM run-time

qeditpm.pub.robelle

allows BS priority

qcompxl.pub.robelle

MPE/iX only

qedify.pub.robelle

CM compiler interface

qcompusl.pub.robelle

CM compiler routines

@.q.robelle

copies of CM compilers

qedit.help.robelle

 

qedhint.help.robelle

 

qzmodhlp.help.robelle

 

qmap.pub.robelle

for QMAP in :Prep command

prose.qlib.robelle

to print manuals, you need this

f92286f.qlibdata.robelle

and at least one font files

 

There are a number of jobs in the Purgejob.Robelle group which can help clean up the Robelle account of unwanted files. One in particular that you may want to use is Cleanup.Purgejob.Robelle. After you have completed the Qedit installation, Cleanup gets rid of all the pre-installation files.

:stream cleanup.purgejob.robelle

Although the Qedit program file is normally installed on the system Qedit.Pub.Robelle, you can move the program to any account and group that has PH and DS capability. There are some file names that are built into Qedit:

 

Filename

Purpose

qedit.help.robelle

the Qedit help text

qedhint.help.robelle

the hint-of-the-day file

qzmodhlp.help.robelle

help text for Qzmodify

qmap.pub.robelle

for QMAP option of :Prep

cobol.q.robelle

etc., the CM compilers

qeditmgr.pub.robelle

a configuration file

qloadxl.pub.robelle

NM run-time routines

 

Moving All the Files

Qedit follows the location of the program file in deciding what file names to open. If you move the Qedit program to the PUB group of the UTIL account, Qedit looks for the files listed above in that account rather than Robelle. If Qedit resides in a group named Pubnew (or Pubxxx), the three "help" files will be searched for in HELPNEW (or HELPxxx). The Qeditmgr file is always assumed to be in the same group as the Qedit program, while Qmap must be in the Pub group and the CM compilers in the Q group.

:hello mgr.util,pub

:fcopy from=qedit.pub.robelle;to=qedit.pub.util;new

:fcopy from=qloadxl.pub.robelle;to=qloadxl.pub.util;new

:fcopy from=qedit.help.robelle;to=qedit.help.util;new

:fcopy from=qedhint.help.robelle; &

       to=qedhint.help.util;new

:fcopy from=qzmodhlp.help.robelle; &

       to=qzmodhlp.help.util;new

:fcopy from=qmap.pub.robelle; &

       to=qmap.pub.util;new

Redirecting the File Names

The Verify Account command shows what account Qedit searches for the Qeditmgr file, Qmap.Pub, and the CM compilers. Use Set Account to override the default. The Verify Filename command shows the names assumed for the "help" files and Set Filename allows you to override them.

Suppose you run Qedit in the Util account, but you don't want to move the rest of the files to that account. You would use Set Account Robelle and Set Filename commands to force Qedit to look back into Robelle for the files instead of in Util.

Moving a "Hooked" Qedit

When you install MPEX and the Vesoft account, they make a copy of Qedit in Pub.Vesoft and "hook" it for closer cooperation with MPEX.

:run qedit.pub.vesoft;lib=p

Since Qedit looks for compilers, help files, and other supporting files in the same account where the program resides, the hooked Qedit looks for those files in the Vesoft account. If you are on MPE/iX and you want I/O redirection of command files, copy the file Qloadxl from Robelle to Vesoft. Put the following Set commands in a configuration file named Qeditmgr.Pub.Vesoft:

/set account robelle   {e.g., Cobol.Q.Robelle}

/set filename help qedit.help.robelle

/set filename hint qedhint.help.robelle

/set filename qzmodhlp qzmodhlp.help.robelle

/set extprog mpex.pub.vesoft com on

The Set Extprog command assumes that you want Qedit to explicitly pass % commands to MPEX, rather than have the "hook" intercept all % lines at every prompt in Qedit. It is desirable to handle % commands within Qedit this way, rather than through the hook, because it ensures that your current workfile is properly posted to the disc and it allows you to Add % commands into a file as data without executing them. To achieve this result, you must rehook Qedit with the Nopercent option:

:run mpex.pub.vesoft

%hook qedit.pub.robelle;nopercent     {SM or Vesoft logon}

You may not find that you need a hooked Qedit, now that Qedit has a :Listredo stack and accepts the VESOFT-style shorthand ("," for Redo). Some remaining benefits of hooking Qedit are that the System Manager can Keep across account boundaries (but watch out for Creator name), and ACD information is retained from Text to Keep.

Running the MPEXHOOKed Qedit

The MPEXHOOK procedure, which intercepts file system calls made by Qedit, is activated differently based on whether the program to be executed is a native-mode or a compatibility-mode program. On Classic systems, or on Spectrum systems running compatibility-mode or OCT-mode Qedit, you run the hooked program with lib=p.

:run qedit.pub.vesoft;lib=p

Lib=P works equally well with the native mode version of Qedit. However, with Qedit/iX, you can specify an XL file instead of the Lib parameter:

:run qedit.pub.vesoft;xl="mpexhknl.pub.vesoft"

The hooked version will work version either way. The Lib parameter is there for MPE compatibility reasons (Classic vs PA-RISC). The XL file parameter is the "correct" way of doing it on MPE/iX.

The following sample User Command, which can be used to run the hooked version of Qedit, determines if Qedit is native-mode or compatibility- mode, and invokes it accordingly.

parm runparm=0

if finfo("qedit.pub.vesoft",9)="NMPRG" then

   run qedit.pub.vesoft;xl="mpexhknl.pub.vesoft";parm=!runparm

else

   run qedit.pub.vesoft;lib=p;parm=!runparm

endif

VESOFT advises that you be running MPEX version 23.11115 or later, so that the Keep-across-accounts feature will work properly with Qedit/iX.

If Qedit/iX aborts with quit parm -50 or -1041, this indicates that the MPEXHOOK support routines are not correctly installed on your system. You will have to stream the VESOFT-supplied job Veproc.Job.Vesoft. If the hooked Qedit/iX still aborts after running this job, you will need to contact VESOFT for a software update.

If you remove Qedit from your system, you will want to revert to the original MPE compilers. Once you remove the compiler interface you can no longer compile Qedit workfiles. you may either Keep them with Qedit, or use the contributed program Qcopy.Qlib.Robelle to convert them to Keep files.

If you did an integral installation of the CM compiler interface, you now do an integral removal. If you did an isolated installation, you now do an isolated removal.

Removing the NM Interface

Reverting to the original NM compilers is a simple matter of going back to the original command files. You should have saved those in @.Stdcmd.Sys. Purge the command files in Pub.Sys, such as Pasxl, and Rename or Copy the originals from Stdcmd.Sys.

Removing the Integral CM Interface

Qeditj3.Qeditjob.Robelle removes the Qedit CM compiler interface that had been integrated into MPE. The original compilers are Restored and the CM Interface is removed from the system SL. If you are on MPE V, a new cold load tape is created.

Ensure that no one compiles for the next half hour. Stop all jobs and send an operator warning. Log on as Manager.Sys, modify the first line of the Qeditj3 job to include the passwords, then :Stream the job.

Qeditj3 first attempts to :Restore the original compilers from a backup tape (you can use the last Hewlett-Packard update tape). Mount the tape and :Reply on the console. It then removes the Qedit interface segment from Sl.Pub.Sys and requests a tape to make a new cold load tape. Please mount a blank tape with a write ring and :Reply. Save this tape and use it on your next cold load.

Removing the Isolated CM Interface

Qeditj3a.Qeditjob.Robelle removes the isolated CM compiler interface from the Robelle account, leaving you only the original ones in Pub.Sys. Ensure that no one compiles or uses Qedit until this job finishes. Stop all jobs and send a warning to all users. Modify the first line of Qeditj3a to include the Robelle account password and stream the job.

Qeditj3a purges fixed compilers from the Robelle account, removing the interface.


Getting a Quick Start with HP Full-Screen Editing

Qedit aims to provide everything an MPE or HP-UX programmer could need to write COBOL, PowerHouse, or other programs, and to prepare documentation. Therefore, Qedit has Line mode for batch editing and full-screen mode for interactive editing. On HP terminals, Qedit's full-screen mode is called Visual mode.

Qedit's Visual mode is a powerful but friendly full-screen editor designed specifically for programmers. It gives you full access to the editing capabilities of your terminal in block-mode, with low system overhead. You can move, copy, mark and delete blocks of text with Visual's cut-and-paste functions, and page backward and forward through your file with function keys. To use Visual mode, you must have an HP terminal or an HP terminal emulator (e.g., Reflection from WRQ).

NOTE: As of HP-UX 11.0, HP has dropped support for block-mode terminals. For this reason, full-screen editing is only available in Screen mode on HP-UX 11.0 and later.

In Visual mode, you have access to all Line mode commands (including UDCs, command files, compiling, linking and running programs, shell scripts, and string searching and changing). Qedit's search and replace functions aim to be simple, fast and powerful (e.g., ignore embedded words, etc.). The Undo command allows you to cancel any previous edits to your file, working back to the state at which you started. Using the optional Open and Shut feature, you can switch between files instantly. With the Justify command, the Prose text formatter and the Spell checker, you can format documents such as memos and manuals.

Visual mode is a good introduction to the HP operating systems for users who don't work on HP computers all day. Those who may particularly benefit are novice users, or users who run Qedit only to update a report skeleton once a week. These occasional users no longer have to memorize editing commands. Visual mode provides a familiar environment where novices can make changes to the entire screen, just as they do on PC editors. You can even configure some electronic mail packages (HPDesk, elm), to put your users directly into Visual mode when they edit a message.

After you have invoked Qedit, and Texted or Opened a file, you switch from Line mode to Visual mode by typing VI or pressing F1. If you don't have a file open, Qedit opens a scratch file and, if empty, fills it with a screenful of blank lines.

 VI [ linenum | "string" ] or press F1

(Default: linenum = *)

Whereas in Line mode you type in command and text lines ending each with a Return, in Visual you edit a full screen of text in block-mode using the terminal keyboard. Since your terminal is off-line from the computer, you can use its cursor and editing keys. You edit by moving the cursor around the screen, inserting and deleting lines and characters. Press Enter to save your changes. To move through the file, you have the convenience of eight function keys, such as F6 Forward One Page.

Visual mode in Reflection for Windows, showing cut-and-paste indicators

You copy, move, hold, and delete blocks of text easily by placing "cut-and-paste" indicators at the start of the line. You may type Line mode commands at the home line ===> and execute them via the Enter or the F7 key. Combining the cut-and-paste functions with the Open and Shut commands, you can also copy and move text quickly between different Qedit files. Use the ZZ cut-and-paste indicator with any command to mark text easily.

The Set Visual command controls how Visual mode operates and allows great latitude in configuring Visual to your own liking. For example, you can choose to have automatic update; decide where the current line or cursor appears; and select how many lines will carry over when you page up or down.

When you are done, exit Visual mode using F8, then Keep or Shut your file. Press F8 again to leave Qedit.

===>

Okay  1691.75  WFILE.DOC.TACCT  "verify"(u)  Move Ready

 *  procedure abc;

+1  begin

+2      integer def;

//  ....+....10...+....20...+...

 

The screen starts with the home Line, followed by the status Line, several text Lines, and ends with the template Line. Columns 3 and 4 of text lines sometimes contain special characters and are called the indicator columns.

Home Line

You type commands, search for strings and for line numbers after the ===> on the home line.

===>

These are executed when the F7 or Enter key is pressed.

The home line is also used by Qedit to print error messages. You must clear the error message by pressing the F7 or Enter key before you can type another command in the home line.

Status Line

The second line shows the status, the current line number (i.e., that of the * line), the name of the file you are editing, the current string with its window, and any pending cut-and-paste task.

Okay  1691.75  WFILE.DOC.TACCT  "verify"(u)  Move Ready

If you have Texted a file into Qeditscr, the status line shows the name of the Text file, which is also your default Keep file.

Text Lines

By default you see the * (current) line and 19 lines after it. Each line is prefixed by the relative line number, and two columns for special indicators.

 *  procedure abc;

+1  begin

+2      integer def;

Use Set Vis Above and Set Vis Below to adjust the number of lines shown above and below the current line.

Template Line

The last line has // and a column template. The // signals end-of-screen to Qedit and must not be erased.

//  ....+....10...+....20...+...

Visual uses more than 76 columns for text on Reflection, Qcterm, a 2393/97, 2626, or 700/9x terminals.

Special Indicator Columns

Qedit leaves columns 3 and 4 of the text lines for you to enter cut-and-paste operators (i.e., MM, CC, HH, etc.). Also, Qedit may print one of two special indicators in these columns:

!

line extends beyond the visible right margin

?

line contains control characters, shown as dots

An ! means the line extends beyond the right terminal margin. To shift the screen image left, type Set Left 55 at the Visual home line and press F7.

A ? means the line contains nonprinting characters such as Nulls, Escapes, Bells, Tabs or possibly Roman-8 extended characters. Qedit replaces these characters with dots (.) in Visual mode, and does not allow you to make changes. These ? lines are not updated when you press Enter.

To edit Bells, Escape sequences, Tabs, ShiftOuts and ShiftIns in Visual, use Set Vis Bell, Set Vis Esc, Set Vis Tab, Set Vis SO and Set Vis SI. All these specify substitute characters to be shown instead of dots. To edit other control codes, use Modify or Change from the ===> line. If you turn Set Editinput Extend Off, Qedit regards Roman-8 characters as nonprinting noise and show them as dots.

In Visual mode, the keyboard gives you the power to move around the screen, edit text, and control the flow of Qedit.

Moving the Cursor

You move around the screen using the cursor keys and others:

 

Cursor Left

Move one space to left

Backspace

Move one space to left

Cursor Right

Move one space to right

Cursor Up

Move one space up

Cursor Down

Move one space down

Return

Down to next line, back to column 5

Home Up

Move to ===> line

Shift-Home

Move to bottom of screen

Tab

Move to next right Set TAB column

Shift-Tab

Move to next left Set TAB column

Prev Page

Only moves around terminal memory

Next Page

Only moves around terminal memory

 

Editing the Text Lines

You revise the screen image using these keys:

 

Space bar

Move cursor right and erase character

any char

Overwrite cursor and move it right

Del Char

Remove character at current cursor

Ins Char

Enable "insert"; use again to disable

Ins Line

Insert blank line above current line

Del Line

Delete line at current cursor

Clear Line

Erase to the end of the line

Clear Display

Avoid! Recovery: Home Up,*,F7

 

To save the changes you have made on the screen,

 

Enter

Send screen image to Qedit, update file

 

Control Functions

To return from Visual mode to Line mode:

 

F8

exit from Visual

 

Some other keys:

 

Select

Useless in Qedit

Stop

Do not use in Visual

Break

Disabled in Visual

Reset

Use if screen locks up, press Enter

Esc

First key of Escape sequences

Del

Does not delete anything!

 

Reflection for DOS Keyboards

If you are using a PC with Reflection for DOS, you need to map the PC keys into the HP keys.

Note that the PC keyboard has two keys labeled Enter, which are used differently in Qedit. The Enter key above the Right Shift key is called the Return key in this manual, and is used to execute commands in Line mode. In Visual mode, this key moves the cursor down by one line. The other Enter key (on the numeric keypad) is called the Enter key, and is used to update the screen in Visual mode.

Here are the default Reflection keystrokes for common functions:

 

Terminal Keyboard

Reflection Key Sequence

Enter

Enter on the numeric keypad. If that doesn't work, try the "+" on the numeric keypad, or try Shift-F10

Home Up

Control-Home

Shift-Home

Control-End

Ins Line

Alt-I

Del Line

Alt-D

Clear Line

Alt-K

Clear Display

Alt-J (avoid in Visual!)

User keys

F9

System keys

F10 (then F7 for help)

 

Additional Functions

Reflection Key Sequence

Begin Line (Column 1)

Home

End Line

End

Help about Reflection

Alt-H

Exit

Alt-X

 

Other PC Keyboards

AdvanceLink is similar (Alt-H is help, Alt-I is Insert Line, Alt-D is Delete Line), but Clear Line is Alt-L, and Enter is Alt-F3. Other terminal emulators have their own keystrokes for common functions. See your emulator's manual for details.

Much of the convenience of Visual mode is due to the power built into the eight user function keys: F1 through F8.

F1

Update and go to next page

F2

Roll Up Screen n lines, as per Set Vis Roll

F3

Findup (search back for current string)

F4

Find (search ahead for current string)

F5

Backward One Page

F6

Forward One Page

F7

Execute command typed in ===> line

F8

Exit from Visual back to Line mode

 

F1: Update and Go to Next Page

Qedit reads the current page and updates the file, then displays the next page. The F1 key combines the Enter key and F6 (Forward) in a single key. However, F1 does not execute any command typed in the home line as the Enter key would.

F2: Roll Up Screen

Qedit clears the screen and displays a new one that is rolled up n lines (default: 6), where n is controlled by Set Vis Roll.

F3: Findup - Previous String

Qedit searches backward in the file, starting from the * line, until it finds a line that contains the current string. Qedit clears the screen and displays a new page, with * positioned at the line that contains the found string. Visual also displays the target string on the Status line.

Before you can use F3, you must establish the string for which to search. Type the string in quotes prefixed by a circumflex (^"string") at the ===> on the home line and press F7, to do the first Findup.

F4: Find - Next String

Qedit searches forward in the file, starting from the * line, until it finds a line that contains the current string. Qedit clears the screen and displays a new page, with * positioned at the line that contains the found string. Visual also shows the target string on the Status line.

Before you can use F4, you must enter the target string. Type the string in quotes ("string") at the ===> on the home line and press F7, to do the first Find.

F5: Backward One Page

Qedit clears the screen and displays the previous page. By default, the top line of the original screen becomes the bottom line of the new screen. Use Set Vis Carry to change the number of lines carried over to the new screen.

F6: Forward One Page

Qedit clears the screen and displays the next page. By default, the bottom line of the original screen becomes the top line of the new screen. Use Set Vis Carry to change the number of lines carried over to the new screen.

F7: Execute a Command

Use the F7 key to execute commands. The current screen is not updated, unless you have Set Vis Update On. Type whatever command you want to execute after the ===>. This includes "strings" to find, Qedit Line mode commands such as Open or Justify, MPE commands, calculator commands (=5/6), and special Visual commands (e.g., * for Refresh, ? for Help). Then press F7. Qedit reads only the home line and executes the function. To first save your screen changes and then execute, use Enter instead of F7.

See the section "Home Line Commands" for complete details.

F8: Exit from Visual

To return from Visual mode to Line mode, use the F8 key. Press F8 again once you are in Line mode to exit Qedit and return to MPE (: prompt). If for some reason F8 fails to exit from Visual, type / at the ===> and press F7 or the Enter key. This should get you back to Line mode.

Line Number. Move to a specific line (e.g., to line 45).

===>45 F7

> and <. Move ahead or back a page. Use with a number to move several pages (e.g., ahead 3 pages).

===>>3 F7

+ and -. Move forward or backward any number of lines (e.g., back 200 lines). If you do not specify a number, the default is the number of lines configured by Set Vis Roll.

===>-200 F7

~ The Tilde Key. Return to the "most recent" screen. If you jump from line 1500 to line 451, ~ sends you back to 1500. This is handy if you jump briefly to another part of your file to check something then want to get back to your original location.

The tilde is also available from line-mode but it has to be enabled by removing it from the list of string delimiters. In order to do this, you could do the following:

/V stringd

Set STRINGDelimiters "|\~{}[]_@?!#>%&:'"

/S stringd "|\{}[]_@?!#>%&:'"

Notice that tilde has been removed from the delimiter list entered on the Set command.

===>~ F7

FIRST and LAST. Move to start or end of file.

===>first F7

Scrollup Character. This character can be entered in the cut-and-paste columns to scroll up in the file. A single character scrolls the number of lines defined by Set Visual Roll. If the character is entered more than once, Qedit scrolls up that many times the number of Roll lines. For example, enter 4 minus signs anywhere to scroll 4 X Roll lines. The default scrollup character is a minus sign. It can be changed to something else with Set Visual Scrollup.

It is never necessary to remember line numbers in full-screen mode. Visual allows you to mark, hold, move, copy, replicate, or delete a block of text, all visually. This is called "cut-and-paste" and is done by putting special indicators in the two blank columns at the left of each text line before you press the Enter key. For example, DD indicates a block of text to be deleted.

Cutting Operations

Order Is Not Important (But One at a Time). You can enter the indicators in any order and on different screens, but 10,000 is the maximum number of lines you can cut. When you have defined a complete cut-and-paste task, Qedit completes the task and removes the indicators. You can only perform one cut-and-paste task at a time.

Single Line

Block of Text

Function

M

MM

Move line or block of text

C

CC

Copy line or block of text

D

DD

Delete line or block of text

H

HH

Hold a line or block of text

 

HJ

Append block of text to Hold file

 

JJ

Justify a block of text

Z

ZZ

Mark a line or block of text

 

XX

Exclude a block of text from the display

 

Pasting Operations

 

A

Insert text "after" this line (or use F for "following")

B

Insert text "before" this line (or P for "preceding")

AH

Insert Hold file after this line (or use FH)

BH

Insert Hold file before this line (or use PH)

A0

Insert Hold0 file after this line (or F0)

B0

Insert Hold0 file before this line (or P0)

R

A line to be replicated after itself

Rn

A line or block to be replicated n times (max. 9). (See "Copying a Block of Text" below.)

 

Display Enhanced. When the cut-and-paste task is partly defined, Qedit highlights the indicated lines and adds a warning to the status line.

Resetting Cut-and-Paste

You can cancel a pending cut-and-paste task (if you have not pressed the final Enter) by entering a period (.) in the ===> line and pressing F7.

===>. F7

Copying a Block of Text

Paste One Copy at a Time. Suppose you want to copy a section of text from one place in your file to another. Here is one way to do it. First, locate the screen containing the start of the block that you want to copy, using a string search via the home line. Move the cursor down to the first line you want to copy, then press Cursor Left twice and type "CC" in the blank columns provided. Press Enter and you should see that line highlighted in inverse video.

Second, find the end of the text section and mark the last line with another "CC". After you press Enter, you should see the entire block highlighted.

Third, go to the screen where you want to insert a copy of the text. Move the cursor down to the line before the desired insertion point, Cursor Left once and type "A" (for after). Press Enter and the block should appear.

Paste Multiple Copies at Once.

When working with a block of text, you can use the same cut-and-paste codes to mark the beginning and the end of the block (i.e., HH on the first line of the block and HH again on the last line). The only exception to this is the block replication code.

In this case, you would use RR to mark the beginning of the block and Rn to mark the end of the block, where n represents the number of times you want that block replicated. For example, to have the same block replicated five times, you would enter R5. The new blocks are inserted immediately after the last line of the copied block.

The original lines marked for replication are written to the Hold0 file.

Cut-and-Paste Between Files

Using Visual mode's cut-and-paste functions, you can copy and move blocks of text between files.

You can only edit one file at a time in Qedit, but you can switch quickly between different Qedit files by Opening and Shutting them.

/o file1

Open file1  List * = 20

/o file2               {implicitly shuts file1}

Shut file1

Open file2  List * = 48

/o *                   {open the last file that was shut}

Shut file2

Open file1  List * = 20

/o *                   {open the second file again}

Shut file1

Open file2  List * = 48

Note: The * shortcut refers to the last Qedit file that was shut.

Now, to copy a block of text from file1 to file2, use HH twice (just as you would use CC) to hold the block in file1. Then, open file2, and use AH or BH to paste in the text from the Hold file. To move a block from file1 to file2, use the DD function to delete the block of text from the first file. The deleted block is stored in a temporary Hold file called Hold0 (Hold-zero). Now immediately open file2 and use A0 or B0 to paste in the text from Hold0.

Dividing and Gluing Operations

 Single line

 

V

a single line to be diVided

G

a single line to be glued

GJ

a single line to be glued with a space inserted

 

 Block of text

 

VV

begin or end of the block to be diVided

GG

begin or end of the block to be glued

 

Dividing Lines in Visual Mode

To divide a line, use the V (diVide) cut-and-paste function in column 3 or 4, then insert the special field separator ("~") at each division point in the line. The default field separator is tilde ("~" ), but you can override this with Set Vis Field. If no "~" is found in the line, a blank line is added after the line.

What about dividing all the lines in a range? Use VV to mark the start and the end of the line range, then place the field separators in the first line of the range. Every line of the range is divided at the specified field columns. If no "~" is found, a blank line is added after each line.

When marking several division points, insert them into the first line of the block from right to left. As you insert them, they shift the following text to the right one space each. Otherwise, if you insert them from left to right, it is difficult to select the proper division point for subsequent fields.

Gluing Lines in Visual Mode

To Glue the next line to the current line, use a G in column 3 or 4. To Glue two lines with a space inserted at the joint, use GJ in columns 3 and 4.

To glue "pairs" of lines within a block, use GG to mark the start and end of the block.

By default, G and GG append text after the last nonblank character in a line, but it is also possible to glue text to specific columnar fields. You do this by inserting a field separator at the start of each field (mark the first line only). The default field separator is the tilde ("~"), but you may override this with Set Vis Field. If you specify three fields, G glues the next three lines to the first line. GG glues the next three lines to the first line, and then go on to the next group of four lines. If the precise column number where each field starts is important to you, insert the field separators from right to left, since each one that is inserted shifts the column numbers that follow off by one more.

Excluding Lines From Visual Mode Display

The XX indicators are used to mark lines that you do not want displayed in full-screen mode. Once marked, the block of text is replaced with a single line.

--- Excluded Area --- 10/34.5

This line shows the line numbers which are currently excluded. An excluded area setting is saved in the workfile so it's preserved across Open/Shut commands. To reset the excluded area and see the original lines again, type .xx on the Homeline and press Enter or F7.

The excluded area can also be defined using Set Visual XX. The current excluded area is displayed on the Verify Visual output.

Restrictions

The Excluded Area line must not be removed, altered or used in any way. This also means that you can not enter any indicators in the cut-and-paste area. If you wish to paste lines before or after the excluded area, you should use the appropriate cut-and-paste indicators on the line that immediate precedes or follows the Excluded Area line.

An excluded area can not be included in any other block operation such as ZZ, CC, MM or other XX.

If any of these rules are broken, Qedit displays an appropriate error message.

Justifying Lines in Visual Mode

Justification in text alignment is available in full-screen mode. To justify a block of text, simply mark the first and last lines in the block with the JJ indicator. If Qedit uses any justify default settings, they are defined by the Set Justify command. If there are no default settings, Qedit assumes the text should be justified within the current display width.

The justified lines are written to the Hold0 file. A single J indicator is not valid.

Renumbering Lines

When the insertion point is on the current screen, Qedit renumbers the screen if needed (and if Set Vis Renum is ON).

Inserting Blank Lines

When entering a lot of new text, it is tiresome to keep pressing Ins Line for each new line. To insert a block of 10 blank lines quickly, press Ins Line to create one blank line, Cursor Left twice, type R9, and press Enter. This reproduces nine copies of the blank line immediately after it (as well as updating the paragraph you just finished typing). Repeat as needed.

Hold Files

Visual has both an implicit and an explicit Hold file.

The Implicit Hold0 File. Any block processed by the CC, MM, JJ, RR, or DD indicators is also written to a disc file called Hold0 (Hold-zero). This allows you to copy the lines back into your workfile using A0 or B0 (add from Hold0, After or Before the line on which you place the indicator).

The Explicit Hold File. The HH indicator writes a block to the Hold file without moving or modifying it. Use H for a single line. To copy the line(s) back into your workfile, use AH or BH. You may need a Hold file when creating a file that you want to compile, or when using the Use command. You must use HH (instead of CC) for copying text from one file to another.

When HH is used to mark the beginning and end of a block, it copies the block of text to the explicit Hold file. With the HH indicator, the current contents of the Hold file are erased and replaced with the marked lines.

If you want to append a block of text to the Hold file, you can use the HJ indicator. HH or HJ can be used to mark the first line. However, HJ must be used to mark the last line. You cannot hold-append a single line of text, which means you can append only two or more lines. With the HJ indicator, the current contents of the Hold file are preserved and the block of text is appended to it.

Marking Changes Without Using Line Numbers

The ZZ indicators mark a group of lines that you want Qedit to remember. Use Z to mark a single line. Note: "Z" for a single line is valid only in Visual mode; in Line mode, use "ZZ" to mark a single line. See the ZZ command in the "Qedit Commands" chapter for further information. Once marked, the lines are displayed at half-bright intensity and you can refer to them in any home line command by using ZZ where the line numbers are expected. This is especially useful when listing lines to the printer, changing or appending strings, and formatting text:

===> list $lp zz  F7

===> change "bob"Robert" zz  F7

 

===> verify zz  F7        {check current ZZ range}

 

===> zz off  F7           {cancel ZZ range}

 

Paste from a Non-Qedit File

If you want to copy text into your current workfile from another file that is not a Qedit file, you cannot use the methods described above. You cannot Open the second file if it is not in Qedit format. Instead, use the List command to find the portion of text that you want to add from it (without Shutting the first file). Then, use the Add command to paste in the text.

===>list xxx

===>add * = xxx 10.7/22.9

All Qedit commands are supported in Visual mode. To do a command, such as Listf or ls, press the Home Up key to reach the home line, then type your command after the ===> and press F7 or Enter. To execute a command, such as Change, on a subset of the file, first use the ZZ cut-and-paste indicators to mark the subset and then use ZZ in the command. After most ===> commands, Qedit prompts you for more commands ("Next command [Visual]"). Type in more commands, or return to your Visual screen above, by pressing the Enter or Return key.

Qedit accepts each command, executes it and goes back to the "Next command" prompt. There are a few exceptions to this process. By default, when you enter an Open command, Qedit assumes you want to edit the file immediately and switches into full-screen mode automatically. If you wish to disable this feature, enter Set Visual Editonopen Off.

If the tilde has been removed from the list of string delimiters (see Set Stringdelimiters[Help1] ) and you enter a tilde "~" at the "Next command" prompt, Qedit uses the current line number associated with the tilde, makes it the current line and goes back into Visual immediately.

Finding Strings

To search for a string, simply type it in quotes at the ===> line and press F7 or Enter.

===>"string"  F7

Qedit will find the next line containing that string, display the page around it, and show the target string in the Status line. To find the next occurrence of the same string, press F4.

To find the previous occurrence of a string, prefix the string with a circumflex.

===>^"string"  F7

To find the next previous occurrence, press F3.

You may delimit strings with any of the following characters:

 

~

Tilde

!

Exclamation mark

#

Number sign

&

Ampersand

_

Underscore

|

Vertical line, Up-line

"

Quotation mark

'

Apostrophe, Single quote

\

Reverse slant, Backslash

 

You may use single quotes (') if you do not have Set Decimal On. Note that, with this syntax, Qedit permits a few less characters in Visual mode than it does in Line mode because Visual mode uses these characters for other purposes. For example, the question mark is used to get quick help about Visual mode, instead of as a string delimiter. If you insist on using other delimiters, you should use the Find command on the ===> line.

===>F :string:     F7

Changing Strings

You can change strings on the screen by entering a Change command on the ===> line.

===>c "niether"neither" */*+19  F7

Help on Visual Mode

To get help, press Home Up, type ? and press F7 or Enter.

===>?  F7

The ? command gives a one-screen summary of Visual mode. For complete on-line help on Qedit, including Visual, type HELP in the ===> line and press F7 or Enter.

===>help  F7

For help on a specific command, type HELP [command name]. See the Help command in the "Qedit Commands" chapter. To get out of help, press F8.

Compile, Link, and Run

You compile your file using the home line. Just type the proper compile command in the ===> line and press F7 or Enter. For example, to compile a current COBOL file:

===>cob85xl *  F7

In fact, you can execute any MPE or shell command in the ===> line. You can :Link and :Run, :Listf, :Showjob, ls, and even execute UDC commands or shell scripts, just as you do Qedit commands.

Formatting Paragraphs

To format a screen paragraph, mark the paragraph with ZZ cut-and-paste indicators, then use a Justify command that includes a ZZ. For example:

===>justify both margin 68 zz  F7

If every paragraph ends with a blank line, you can Justify a paragraph by using the relative line number on the screen. Justify will start at that point and continue until it finds a blank line:

===>justify both margin 68 *+2  F7

For more information on Justify, see the Justify command in the "Qedit Commands" chapter.

Undoing Changes in Visual Mode

After you have made some changes to your screen in Visual mode and updated the file by pressing Enter, you may decide you don't want those changes after all. You can use the Undo command to cancel these changes.

All of the changes you make on the screen before pressing Enter, are treated by Qedit as one "undo-able" command, except for cut-and-paste operations. Qedit always executes a cut-and-paste last after updating the file with any other changes, no matter what order the changes were made in. This means that you can choose to undo just the cut-and-paste operation, or undo it and all of the other changes. You can continue undoing your previous changes until the file is back to its original state.

Refreshing the Screen

If you make changes to the screen, then decide not to keep them before you press Enter to update your screen, how do you get your original text back? You refresh the screen by typing a * on the home line, then pressing F7, F1 or Enter (or any function key with Set Vis Update On). Use the Undo command if you press Enter and then decide that you don't want to keep your changes.

If you insert so many new lines that you push the column template line right off the bottom of your screen, don't worry -- it's not really gone. Qedit won't update your screen without the template line, however. Press Next Page (Pg Dn) to pull up the next screen of display memory. You have a problem only if you inserted so many lines that you pushed the template line right out of display memory, and even then you can still recover your changes. See the Errors in Visual section of Appendix E, regarding qscreen.

Screen Refresh is particularly useful if you've pressed Clear Display by accident.

===>*  F7

When using Set Vis Update On to automatically update the screen, use *> F7 or *< F7 to move ahead or back one page, without updating the current page.

Other Line Mode Commands

You may enter any Line mode Qedit command in the ===> line, including Opening another file, MPE % commands for an external program such as MPEX, and calculator commands (=). The ZZ cut-and-paste indicator can be used to mark a group of lines for use in any Qedit Line mode command.

===>list $lp $include zz  F7

Truncated Home Line

When editing a file with short records (e.g., Set Lang Text, Set Len 20), the right margin of terminal display memory is set to match the record length. This means that when typing home line commands you wrap the status line at the same width as the records (very inconvenient if the record length is 3 bytes!). You can, however, cursor past the right margin to type a longer command. Therefore, Qedit expands the right margin when you use F7 to execute the home line command, making it possible to execute a long command even when the data length is short. Qedit cannot expand the right margin if you press Enter (and may cut short your command).

Exit from Visual

If your function keys do not work for some reason, you may not be able to use F8 to exit from Visual. Instead, press Home Up, type / and press Enter. This updates your current screen and returns you to Line mode.

===>/  F7


Getting a Quick Start with Line Mode Editing

You don't have to learn every command in order to use Qedit. With just a few of the basic functions, you can take care of editing job streams, programs, memos, or big text files. First, find out how to run Qedit on your system. Your system manager may have set up an easy way to access Qedit (try typing qedit). Look for a slash prompt (/ on MPE or qux/ on HP-UX), which tells you Qedit is ready to go.

This introduction will make the following activities familiar to you: adding lines to a file, looking at the contents of files, searching files for specific characters, changing one line or many lines, deleting, moving, and copying lines, and saving files. In the examples to follow, watch for comments on the right-hand side, enclosed in curly braces. Whatever you see in { } is an explanation, not part of the command, although Qedit will accept it. Press Return after each command line. When you finish your session, getting back out of Qedit is easy. Type Exit, and press the Return key:

/exit

You add text with the Add command. Qedit numbers each line you add. Pressing Return at any spot in the line moves you to a new line. This means that you can put a blank line into your text if you press Return twice in a row. Qedit continues to add your lines of text until you type // (two slashes) at the beginning of a new line and press Return. Try typing Add right now, and Qedit moves the cursor and prints some identifying information:

/add                          {remember to press Return}

 QEDITSCR                     {Qedit displays this line}

 Temporary File List * = 1    {and this line too}

  1  _                        {go on, Qedit is waiting for you}

Continue to "add" by typing in this example:

  1    MEMO TO: Drama Staff, News Simulation Dept.

  2

  3    FROM:    Marie Reimer, Publicity Dept.

  4

  5    Please check your in-baskets daily and

  6    respond to your fan mail within a week.

  7    //                     {stop adding for now}

/                             {Qedit is waiting again}

You can add lines anywhere in the file by typing Add followed by the line number where you want to start your insertion. For example, if you decide to date this memo, type at the slash prompt:

/add 2

  2.1  DATE:  November 18, 2000

  2.2

  2.3  //

/

You have added line 2.1 for the date, and line 2.2, which is blank. Line 2.3 is not put into your file, since typing the double slash stopped the adding. Notice that Qedit used line numbers that would fit between line 2 and line 3. Now, if you want to see what the whole thing looks like, type List ALL at the slash prompt.

/list all

  1    MEMO TO: Drama Staff, News Simulation Dept.

  2

  2.1  DATE:  November 18, 2000

  2.2

  3    FROM:    Marie Reimer, Publicity Dept.

  4

  5    Please check your in-baskets daily and

  6    respond to your fan mail within a week.

/

The command for looking at the file is List. But you can do much more than List ALL. For example, you can list a file you're not even working on. Our sample memo is a temporary file, in your group, named Qeditscr, but you could look at a file in another group now without harming the memo by typing, for example:

/list qedhint.help.robelle

The file qedhint.help may be scrolling by on your screen, but don't panic. If you change your mind about looking at it, you can stop the listing by holding down the Control key and pressing "Y".

You may choose to look at just a small part of the file. To prove that the memo, although temporarily gone from your screen, is not lost forever, look at two lines of it:

/list 3/4

  3    FROM:    Marie Reimer, Publicity Dept.

  4

Instead of listing all, you limited the range of lines to be listed. A range of lines, called a rangelist, can have specific line numbers (such as 3 in the above example), words like "first" and "last", relative line numbers such as -3 (means the third line back) or +10 (tenth line ahead), or a combination.

/list first/2,+1,last-2

  1    MEMO TO: Drama Staff, News Simulation Dept.

  2

  2.2

  4

The slash / separating the numbers (or words) symbolizes the word "to". Rangelists can also contain strings. See the section on strings (called Searching the File), or the "Glossary[Help2] " for definitions of rangelist[Help3]  and string[Help4] .

If you want to browse through the file, the command you need is LJ. LJ stands for List-Jump. Qedit shows you a screen of text, prints

More?[yes]

at the bottom of the screen, and waits for you. If you press Return, Qedit displays the next screen. You can stop browsing by pressing Control-Y, typing NO or just N, or by typing //. Also, you can type any command, and Qedit stops browsing to execute it. To request a List-Jump:

/lj 6                     {begin browsing at line 6}

/lj qedhint.help.robelle  {browse entire hints file}

So far, you typed line numbers to specify which lines you wanted to see. There is another way to list lines, and that is to specify an identifying string. Put anything in quotes and it's a string. Qedit lists all the lines that contain that exact same "anything".

/list "your"

  5    Please check your in-baskets daily and

  6    respond to your fan mail within a week.

2 lines found

There are two occurrences of "your" in the file, one on line 5 and one on line 6.

Strings can help you find a particular place in the file quickly.

With the commands Find and Findup, you can go to the next consecutive location of a string. Find searches the file from your current location to the end. Findup searches backwards from where you are to the beginning. So in order to search a file for a date scattered throughout it, type:

/find "January 18"       {search forward from current line}

 Or, search back through the file with

/findup "January 18"

Qedit displays the next line containing "January 18". To search again for the same string, just type Find (or Findup). You can abbreviate "Find" to "F" and "Findup" to "^".

/f

To search for a different string, just type F "new string".

Suppose you want to change the date of your memo. You could do it the slow way, first deleting the line, then adding a replacement line with the new date. But instead of all that retyping, try the Modify command. Modify has a lot of power. Here's how to use it:

1.        Type M and the line number.

2.        Qedit displays the line, and you move along on the line below it by pressing the space bar.

3.        Stop at the point where you want to make your correction.

4.        Type in the change to be inserted and press Return.

5.        Qedit displays the entire corrected line for your approval. Make another correction if you want, and when satisfied, press Return again to accept the corrected line and get back to the slash prompt.

An example:

/m2.1

  2.1  DATE:  November 18, 2000

                        9        {move with the space bar}

                                 {press Return}

  2.1  DATE:  November 19, 2000  {press Return again}

Here is a partial list of special things you can do with Modify:

 

^B

insert text Before this column

^D

DELETE text from this column onward

^L

add text after the LAST column in the line

^O

OVERWRITE (or replace) columns

^T

TRAVEL over the line without changing it

^G

GOOFED. Put the line back the way it was, please

 

Note: The little symbol ^ is a shorthand way of saying that you hold down the Control key (on some keyboards abbreviated Ctrl) while at the same time pressing the letter. For example, ^B (or Control-B): keep the Control key down with one finger while with another, type a B. These symbols won't show up on your screen.

This command is easy to use but awkward to describe; you'll understand how to use it much faster if you give it a try. Let's take a typical example, and modify line 5 of our memo. Begin by typing "m5" and, of course, pressing Return. Then, to replace "daily" with "every day", our first step is to delete the word. Use the space bar to move to the column under the "d" in "daily". Press ^D (you won't see anything, remember), then space across all the columns you want to delete. Don't press Return yet.

The second step is to insert the two new words. Press ^B and type "every day". Now press Return to see the line with the revisions.

Qedit lets you see your revisions and continue modifying with as many different changes as you can fit into one pass, before you press Return. In order to make changes at different locations in a line, press ^T to space over the intervening characters without disturbing them. If you goofed, press ^G instead: you'll get your original line back.

The final step is to accept the revisions by pressing Return one last time.

If your fingers are so trained to MPE's style of Modify (e.g., D for delete) that you cannot remember to use the Control key, do not despair. As with most things in Qedit, there is a configuration option to solve this problem. The command Set Mod HP instructs Qedit to accept HP-style modifies (i.e., MPE modifies such as D and I), instead of Qedit-style. See the Modify section of the Set command.

There is another way to modify lines in your workfile. The Change command allows you to make changes throughout the entire file, without the bother of working on each line one by one. For example, with one Change command to your memo, you can replace all the colons with dashes.

/change ":"-" all

  1    MEMO TO- Drama Staff, News Simulation Dept.

  2.1  DATE-  November 19, 2000

  3    FROM-    Marie Reimer, Publicity Dept.

3 lines changed

Using the Change All command is a one-way street. If we now decide we don't like the dashes and want to get the colons back, observe what happens to Line 5.

/change"-":" all

  1    MEMO TO: Drama Staff, News Simulation Dept.

  2.1  DATE:  November 19, 2000

  3    FROM:    Marie Reimer, Publicity Dept.

  5    Please check your in:baskets daily and

4 lines changed

This second Change command has gotten us into hot water. Luckily, Qedit has an Undo command that takes your file step-by-step backwards to put it back to the way it was. See the Undo command in the "Qedit Commands" chapter.

CJ Command

If you're not sure what the consequences of a global change will be, use the CJ command. CJ stands for Change-Jump. Qedit shows you each line it means to change, and waits for you to approve, to change your mind, or to modify that line. Then Qedit jumps to the next occurrence of your string, and repeats its question until you have dealt with all occurrences of the string in the file. To accept the default answer of NO (i.e., don't replace the string), shown in square brackets, just press Return.

/cj":"-" all

  1    MEMO TO: Drama Staff, News Simulation Dept.

Change okay (Y,N or Modify) [No]:  {press Return}

  2.1  DATE:  November 19, 2000

Change okay (Y,N or Modify) [No]:  {press Return}

  3    FROM:    Marie Reimer, Publicity Dept.

Change okay (Y,N or Modify) [No]:  {press Return}

  5    Please check your in:baskets daily and

Change okay (Y,N or Modify) [No]:Yes

1 line changed

You can use the handy ^Y to stop in the midst of change-jumping just as you used it to stop listing.

Rangelist

You can also specify individual lines or a rangelist to Change. For example,

/change "Dept."Department" 1/3

  1    MEMO TO: Drama Staff, News Simulation Department

  3    FROM:    Marie Reimer, Publicity Department

2 lines changed

 

/change "Drama Staff, "" 1  {changes string to nothing}

                            {i.e., deletes it}

  1    MEMO TO: News Simulation Department

1 line changed

Copying lines is a variation of the Add command. One reason we might want to copy lines is to make a general-purpose form out of our memo. We can keep a sample memo form at the beginning of the file, then copy it to the end of the file and fill it in whenever we need to communicate. This is how to do it:

/add last = first/4

  7    MEMO TO: News Simulation Department

  8

  9    DATE:  November 18, 2000

 10

 11    FROM:    Marie Reimer, Publicity Department

 12

6 lines COPIED

Qedit copies the rangelist (first/4 = first line to line 4) after the indicated line (here, last line in file). To accomplish our goal of placing the sample memo template at the beginning of the file, we'll have to move the first six lines so they follow our new sample. Before we try moving lines, a last tip on copying: you can copy lines from an external file by including the file name in the command, placed after the equals sign and right before the rangelist.

Moving is very similar to copying; it's another form of the Add command. But, instead of using the equals sign, use the less-than sign. You can specify:

/add 12 < 1/6

 13    MEMO TO: News Simulation Department

 14

 15    DATE:  November 18, 2000

 16

 17    FROM:    Marie Reimer, Publicity Department

 18

 19    Please check your in-baskets daily and

 20    respond to your fan mail within a week.

8 lines MOVED

Qedit moves the rangelist (in this case, lines 1 to 6) after the indicated line (in this case, 12). In case you were wondering, we could have used "last" instead of the number "12". You can add, move, or copy lines to any spot. In fact, we could have copied the first six lines to the beginning of the file in the first place, but then we wouldn't have had this fascinating "move" example. The result of this particular move is

/list all

  7    MEMO TO: News Simulation Department

  8

  9    DATE:  November 18, 2000

 10

 11    FROM:    Marie Reimer, Publicity Department

 12

 13    MEMO TO: News Simulation Department

 14

 15    DATE:  November 18, 2000

 16

 17    FROM:    Marie Reimer, Publicity Department

 18

 19    Please check your in-baskets daily and

 20    respond to your fan mail within a week.

To demonstrate the Delete command, we'll get rid of our memo template. On some systems, Qedit asks for confirmation before deleting a large number of lines. If so, you can cancel the deletion just by pressing Return; to confirm the deletion, type "yes" and press Return. The abbreviation for Delete is simply D :

/d first/12

  7   _MEMO TO: News Simulation Department

  8   _

  9   _DATE:  November 18, 2000

 10   _

 11   _FROM:    Marie Reimer, Publicity Department

 12   _

DELETE 6 lines [no]? yes

If you typed "yes" without due consideration, you now have a chance to take it back. Press Control-Y, and Qedit saves your bacon with the message "Undeleted!" But you must press Control-Y immediately: if you do anything else between the deletion and the rescue, Qedit will commit to the deletion. However, in this situation the Undo command can bring your lines back, even if you have made more changes. You must undo each change to the file in reverse order. See the "Qedit Commands" chapter of the manual for details.

On-line help is available on every topic in Qedit. After you've become an expert with the commands introduced here, you can use Help to teach yourself all sorts of amazing new commands. To get Help, type a question mark or the word HELP.

/help

 or

/?

Qedit responds with a list of its commands, and at the bottom of the screen, a list of keywords. Type the keyword of the topic in which you're interested. For example, one of the keywords is "Full-Screen". Get an introduction to full-screen mode by typing:

>full-screen

Did you notice that the Help prompt is different from Qedit's regular prompt?

When you asked for Help, Qedit filled your screen with lists. To learn about some of the commands in the list, (e.g., the Add command), type the keyword:

>commands

and Qedit gives you some general information on the topic of commands. At the bottom of the screen is a list of keywords. Type the one in which you're interested:

>add

Qedit responds with further information. You can backtrack your route and look at all the other possibilities too. Pressing Return takes you back one step at a time.

To exit from Help, press the Return key until you see the regular Qedit slash prompt again.

There are two commands that preserve your work: Keep and Shut. First, invent a name for your file. Naturally, two files cannot have the same name. The name must be a valid MPE file name. We've been working on a temporary file. To save it, name it:

/keep myfile1

When you want to work on Myfile1 again, type:

/text myfile1

and Qedit will copy Myfile1 for you to use. If you make changes to the file, remember to Keep it again before you leave Qedit to make the changes a permanent part of the file.

Only Qedit files can be opened and shut. It is much faster to use the Open command than it is to use the Text command, because you make changes directly to the Open file. With a Text file, you must wait for Qedit to make a copy to which you make your changes.

Using the Shut command converts your file to a Qedit workfile. You can Shut a new file, or a file that you made a copy of (with the Text command). Name the file as described above.

/text myfile1

QEDITSCR               {copy of Myfile1}

16 lines in file

/shut myfile1

MYFILE1,OLD  Qedit File, # of lines=16

Purge existing file [no]?  Yes

File renamed from QEDITSCR to MYFILE1


Running Qedit under MPE

To run Qedit on MPE, type this command:

:run qedit.pub.robelle

Qedit. Copyright Robelle Solutions Technology Inc. 1977-2001.

(Version 5.0) Type ? for help.

Today's Hint.  For full-screen edit, use Visual.

/

Qedit prints its version number and the hint of the day and prompts with "/". You type commands, ending each with Return. For example, to edit a file enter a Text command:

/text filename

To save your edits, use the Keep command.

Initially you are in Line mode (you type command and text lines, ending each with Return). You can backspace over errors with Control-H (holding down Control while you press "H"), or use the Backspace key. Control-X cancels a line. The function keys give you eight quick functions: F1 = Visual, F2 = Roll up, F3 = Findup, F4 = Find, F5 = Browse backward one page, F6 = Browse forward, F7 = Listredo, and F8 = Exit.

Use the /VIsual command or the F1 key to switch to full-screen mode, where you edit a full screen of text using the terminal keys. The Enter key passes the revised screen back to Qedit, and the F7 key executes any Line command that you type on the home line.

To return from full-screen mode to Line mode, press the F8 key. To save changes to your Text file, use the Keep command. To get out of Qedit, type Exit or press F8 again.

/keep

/exit

End of program

If you forget to Keep your changes, Qedit warns that your changes weren't saved, you can rerun Qedit, reopen the temporary workfile (Open with no parameters), and save your changes.

The temporary file called "Qeditscr" is Qedit's primary scratch file. Whenever you use the default options for Opening or Texting a file, your work will be in the Qeditscr scratch file.

How to Edit Several Files?

What if you want to edit two or more files, and copy lines between them? You could Text the first file, Hold the selected lines, Keep your changes, then Text the second file and insert the lines. However, if you are doing a large number of edits, the constant Text and Keep operations are inconvenient.

A faster method is to Text each file into an extra scratch file of its own. Then use the "Open ?" or the "Open *-n" command to switch quickly between them. By default, Text always copies the file into the Qeditscr scratch file. However, Qedit can supply up to eight extra scratch files. To Text a file called abcd into an extra scratch file, type:

/text abcd,new

When you Exit, Qedit checks whether you have any unsaved edits in any of your extra scratch files. If there are some unsaved edits, Qedit prompts you to "Discard?" them or to stay in Qedit to save them with the Keep command.

Starting a New Scratch File

Sometimes you start editing a new document and have nothing to Text to create the extra scratch file. In this case, use the New command without parameters.

/new

A new extra scratch file is created and assigned a sequential number (1,2,3...). If you use the Open ? command, you would see "Extra Scratch file #2" in the list of files. If you do a Keep or Set Keep Name, you would then see the Keep file as the Text name in Open ?.

When you run Qedit, it automatically "uses" two configuration files if they exist: Qeditmgr.Pub.Sys and Qeditmgr in the same group and account as the program file (usually Pub.Robelle). The system manager creates either or both of these files and puts Qedit commands in them to set Qedit options, print messages, and execute standard :File commands. To check the options for your site, List these files.

If you want a Qeditmgr file for your logon account or your logon group, run Qedit with Parm=1 or Parm=2. Parm=1 executes Qeditmgr.Pub.logon, while Parm=2 executes Qeditmgr.logon.logon. To execute both, run with Parm=3 (3 is 2 plus 1; you can combine PARM options). These files are in addition to the global Qeditmgr files, which are always executed first.

:run qedit.pub.robelle;parm=1  {uses Qeditmgr.Pub}

When you run Qedit, it attempts to execute commands in global configuration files: Qeditmgr.Pub.Sys and/or Qeditmgr.Pub.Robelle. The Qeditmgr file, which can be a Qedit workfile or a Keep file, may limit Qedit users or do default Set commands. If you move Qedit out of the Robelle account, Qedit looks for the Qeditmgr file in its new location.

Limiting Compile Priority

If you want to restrict compiles to the DS or ES subqueue, put a COMPPRI command in your Qeditmgr file. The syntax is a little nonstandard, in that it acts like a Set command, but does not use the word Set.

COMPPRI=DS      {or COMPPRI=ES}

COMPPRI specifies the highest priority at which you can Compile within Qedit. Any Qedit compile commands automatically "create" the compiler in the lower priority. Qedit itself, and the user, remain in the original higher priority. In no case will the compile occur at a higher priority than that of Qedit. COMPPRI may only be executed via Qeditmgr; it cannot be entered from the keyboard.

Default Set Commands

Qedit treats the Qeditmgr file exactly like a usefile, so Qeditmgr can include any Qedit commands. The Set commands let you configure Qedit so it has the ideal defaults for your shop (e.g., Set Lang Cobol ...). Here is a typical Qeditmgr file:

{These are default qedit values for all users:}

comppri=ds                {force compiles into ds}

set lang cobolx all on

set whichcomp cobol 85    {CM compiles}

set whichcomp fortran 77  {CM compiles}

set x date list off       {mark changed lines with date}

set check on              {verify delete/format of >5 lines}

set list page on          {LP listings interpret $page}

set udc udc.catalog.robelle

z=list */last             {define Z command}

For details on Set commands, refer to the "Qedit Commands" chapter.

If one set of defaults is not appropriate for everyone on your system, it is possible to set up account and/or group Qeditmgr files. See the chapter "Running MPE under Qedit" for details. For security reasons, users cannot override the global Qeditmgr files with :File commands. This prevents them from getting around the limits imposed by the system manager.

Qedit in batch is almost identical to Qedit in a session, except for answering questions. When Qedit asks a question in batch, no one is there to answer it. Therefore, Qedit does not expect an answer from $stdinx. Qedit assumes that you want your batch task to complete, so it always selects the option that will complete the command successfully. This is normally a "YES" answer, as in "yes, clear the file" or "yes, upshift the line". Qedit prints the question on $stdlist, and the answer that it has selected for you.

If you run Qedit from a batch job, but redirect $stdinx and $stdlist to the same terminal, Qedit acts as if it were in Session.

If you run Qedit in a REMOTE SESSION that was created from a batch job on the other machine, Qedit is unable to detect that it is really controlled by a job. So, Qedit operates in Session mode and waits for answers to all questions. You can use Set Interactive Off as your first command to override this.

When Qedit encounters an error in batch, it has no one there to correct it. Therefore, Qedit normally aborts. However, you can use Set Autocont On to override this abort, instructing Qedit to keep processing after errors in batch (i.e., automatically insert a :Continue before each command).

1

Execute QEDITMGR.PUB.logon

2

Execute QEDITMGR.logongroup.logonacct

4

Execute INFO string once

8

Execute INFO string on each reactivation

16

Unused

32

Don't suspend on exit, terminate

64

Check with user before Exiting

128

Execute Info= string only

256

Suspend on info=file name and single file edit

512

Single file edit only (info= contains name)

 

Values may be combined by adding them together. For example, Parm=67 means "execute Qeditmgr files in the Pub group of my logon account and in my logon group (in addition to to the global qeditmgr files) and don't let me Exit without first double-checking".

If you run Qedit from within another tool that does not support Parm= on the :Run command, you can either use Info="-p n" or put the Parm value into the QEDPARMBITS JCW[Help5] :

:run qedit.pub.robelle;info="-p 64"

:setjcw qedparmbits=64

:run qedit.pub.robelle

From the Posix Shell

The Posix shell does not have the concept of a Parm value. Previous versions of Qedit still try to retrieve the value and are ending up with unpredictable values causing unpredictable behavior. To get around this problem, Qedit tries to determine where it is running from. If it is run from the standard Posix shell, sh.hpbin.sys, Qedit assumes the parm value is entered via the -P argument. For example, to run Qedit with a value of 67 from the Posix shell prompt, one would enter:

/ROBELLE/PUB/QEDIT -p 67

All arguments are retrieved as if they had been entered in the MPE Info= string. So, any feature supported by the Info= mechanism also works from the Posix shell.

Following are explanations and examples of running Qedit with the different parameter and Info strings.

Exit with Verify

Some users find that they Exit from Qedit inadvertently by pressing F8 too many times. This can be irritating if you have many suspended son processes, which are lost on Exit. To require user approval on Exit, run Qedit with Parm=64.

:run qedit.pub.robelle;parm=64

/e

Okay to exit [no]:

/

Info= First File to Edit

Info= can be used to pass Qedit the name of the first file to edit, unless you use Parm 4, 8 or 128 to define Info= as a command string.

:run qedit.pub.robelle;info="myfile"

/visual

If the file named is an existing file, Qedit either Texts a copy of it, or Opens it if the file code is 111. If the file does not exist, Qedit configures the Set Keep Name to create that file when you do a default Keep command (e.g., K with no parameters). To create a new Qedit workfile, use a :File command with Code=111:

:file newwork;code=111

:run qedit.pub.robelle;info="newwork"

Even though you passed in the first file name to Qedit, you can edit other files too.

Random Name for Primary Scratch File

If you use the Info= file name option or Set Work Random On, Qedit generates a random name for the Qedit scratch file, instead of using Qeditscr. This allows you to have multiple copies of Qedit in the same session without worrying about conflicts over use of Qeditscr. The scratch file is permanent and the name is QEDnnnnn in your current logon group. Even though random scratch files are created in MPE's permanent domain, they are temporary in the sense that Qedit purges them when you exit. For this reason, you must have Set Work Temp ON to be able to use random scratch files.

"Discard Changes?" on Exit

When you are using random, permanent scratch files, Qedit needs to purge them when it terminates. But you may not have saved your editing work yet. In that case, Qedit asks you "Discard changes?" and will not Exit/Purge unless you answer Yes:

:qedit.pub.robelle myfile

/visual

/exit

Discard your changes [no]:

/

Qedit can supply Extra Scratch Files as well as the Primary Scratch file. These too are checked on Exit to see if you left any edits unsaved.

Info= "-p 99" Specifies Parm Value

The Info value can specify the Parm bits as well as the first file name. You precede the file name by -p and a numeric value (e.g., -p 64 or -p %100 or -p $40). For example, to edit "myfile" and confirm "Ok to exit" on the Exit command, you could do the following:

:run qedit.pub.robelle;info="-p 64 myfile"

/visual

/exit

Okay to exit [no]:

Info= "-c cmdstring"

In addition to passing the Parm value and the edit file name, Info can specify commands to be executed, with the -c option. The -c is followed by the commands to be executed. If those commands contain a space, they must be enclosed in one of the Qedit quote characters; otherwise, the quotes are optional. Note that the -c must be lowercase, as in UNIX.

The Parm value, if any, is specified before the -c option, and the file name to edit, if specified, must be placed after the -c option. When both -c and a file name occur, the -c commands are executed after the file is accessed for editing. Here are some examples:

qedit "-c visual myfile"

qedit "-c :visual: myfile"

qedit '-c "set vis ab 3 bel 12;visual" myfile'

qedit "-c 'text abc;use fixit;k,y;e'"

qedit "-p 64 -c visual myfile"

The underscore character can be used as a string delimiter and as as valid character in a Posix filename. If you enter a filename containing an underscore in the INFO= string parameter, Qedit interprets the underscore as a string delimiter. This is a known problem and we are working on a permanent fix for it. For example, if you enter:

run qedit.pub.robelle;info='-c "t my_history;vi"'

This command should start up Qedit, have it open the Posix file called my_history and go into full-screen mode automatically. However, since the underscore is seen as a string delimiter, whatever follows is basically ignored during command processing. Thus, the file is opened but Qedit stays at the line-mode prompt.

We hope to have a permanent fix in a future release. In the meantime, the workaround is to explicitly identify the underscore as being part of the filename. You can do this in different ways. Here are two examples.

run qedit.pub.robelle;info='-c t $file \my_history\;vi"'

The $file keyword and the backslash characters are used to clearly identify the filename. The other approach is remove the underscore from the list of valid delimiters using the Set StringDelimiters[Help6]  command.

run qedit.pub.robelle;info='set stringd posix;-c "t my_history;vi"'

The $file approach is simpler as it only affects that particular command. The Set StringDelimiters approach should be used with caution as it might affect other commands during the edit session.

Parm 512 to Edit a Single File

Sometimes you want to invoke Qedit for a specific purpose, such as to edit order notes in a purchase order system. You are using Qedit as a dedicated tool for a specific purpose. In these cases, specify Parm 512 and pass in the file name through Info=. You are able to edit only that file, and it will be saved on exit. You will not be allowed to edit any other file.

:run qedit.pub.robelle;info="-p 512 -c visual myfile"

/exit

Save your changes (yes/no)?

Parm 512 is the same as the Basicentry entry point, except that the file name is specified through Info= rather than through :File Edttext. The functioning is the same, but the primary scratch file will be random instead of Qeditscr. Many tools do not allow you to specify an entry point when running a program, so Parm 512 gives you an alternative.

Info= An Empty File to Fill

You can easily start with an empty file, add text to it, and Keep it on Exit. Create the file before entering Qedit and use the single file Parm value:

:build abc.source;rec=-76,10,f,ascii

:run qedit.pub.robelle;info="-p 512 abc.source"

Info= Temporary File

You can edit an existing Temporary file, whether empty or not, and Keep it back into the same file name on Exit. Warning: Never use the ;Temp option on :File commands, only on the :Build command. And don't use ,Oldtemp either. Oldtemp has no effect on the creation of files. Using ;Temp on the :File command overrides the Close disposition of the file and causes Qedit to create unwanted, empty temporary files.

:build message;rec=-80,16,f,ascii;temp

:run qedit.pub.robelle;info="message"

Info= Can Create New Files

Info= file creates a new Keep file on Exit if one did not exist. To create a new Qedit workfile, use a :File command with Code=111. For example, these commands work whether newfile exists yet or not:

:run qedit.pub.robelle;info="newfile"

/add last=template

/visual

/exit

 

:file newfile;code=111

:run qedit.pub.robelle;info="newfile"

/add last=template

/visual

/exit

This method cannot be used to create a new temporary file. Build the temporary file before invoking Qedit instead.

Parm Values to Suspend or Not

When you exit Qedit, it either terminates or suspends, depending upon how you invoked it and what Parm values you specified.

What are the pluses and minuses of suspending? Unfortunately, many tools allow you to run Qedit, but do not notice if Qedit suspends when done rather than terminating. HPDesk has this problem, as well as any program that calls the Hpcicommand intrinsic to execute Run commands (e.g., native-mode PowerHouse). The next time you run Qedit from within the tool, you get a new copy of Qedit. Eventually you will have many suspended copies of Qedit, all consuming system resources. However, if you have a tool, such as Select or MPEX, that can reactivate suspended processes, activating an existing process is much more efficient on MPE than creating a new one.

If you run Qedit without any special options, it suspends on Exit by default; you can suppress this with Parm 32. You can also suppress suspend with Set Suspend Off. If you specified an Info= string (or use the Basicentry entry point), Qedit does not suspend on Exit; it terminates. To force Qedit to suspend, use Parm 256. When Qedit is reactivated, it repeats the steps that it does upon initial entry, except for execution of the configuration files.

:run qedit;info="-p 256 myfile" {suspend}

:run qedit;parm=32              {do not suspend}

Info= Commands Only

If you :Run Qedit with Parm 4, the entire Info= parameter is treated as a string of Qedit commands to be executed (up to 256 characters).

:run qedit.pub.robelle;parm=4;info="use jobfile;exit"

If you use Parm 4 and Info= when you run Qedit from a menu program, Qedit executes the Info= commands only once. If you want Qedit to re-execute those commands every time it is activated, use Parm 8.

If you want Qedit to execute only the Info= commands and not to prompt the user for input, use Parm 128. This is handy when you want to invoke Qedit to perform a specific task without user intervention:

:run qedit.pub.robelle;parm=128;info="reflect dir"

Also, if you want Qedit to suspend and repeat the Info= string (only) each time you activate it, combine Parm 8 and Parm 128 (makes Parm 136).

Remember, if you don't specify Parm 4, 8 or 128, Info= will be interpreted as a file to edit unless you precede the commands with the -c option.

Basicentry Option

Basicentry is on older option that provides the same capabilities as Info=file name. When you run Qedit with the Basicentry entry point, Qedit edits the file "Edttext" that you have defined via a :File command. Basicentry can be combined with Parm 4 and Info="command". For example,

:file edttext=abc.source

:run qedit.pub.robelle,basicentry; &

     parm=4;info="visual;exit"

If you are using Qedit from within another program, it is more efficient to have Qedit suspend on Exit so that you don't have to create a new process for each editing task. You can do this by combining Basicentry with Parm 256, which means suspend on Exit, or Basicentry and Parm 8, which means repeat the Info= string each time Qedit is activated.

Basicentry uses the same logic as Info=file name, vis-a-vis empty files, new files, Opening workfiles, temporary files, etc. Remember, never use ;TEMP or =OLDTEMP on you :File commands. You can use Basicentry to create a new temporary file:

:file edttext=message

:run qedit.pub.robelle,basicentry;parm=4; &

     info="set keep name *edttext,temp"

Qedit has a number of JCWs (Job Control Words, a feature of MPE) that allow you to configure and direct the execution of Qedit. Most of these have to do with the type of terminal you are using, but QEDITMGRTRACE allows you to see your configuration commands and QEDPARMBITS allows you to specify the Parm= values without a Parm= option on the Run command.

When you run Qedit, it must identify the type of terminal that you are using and determine what function-key labels to display. Qedit does status requests to detect the model number and the current width of display memory. This information is used to enhance the functioning of Qzmodify, Visual, Help and List. Qedit locks the keyboard during terminal identification and discards any user input that manages to get through. However, if you have Reflection typeahead enabled, this is not possible; be careful not to type during terminal identification in this case.

Qedit sets three JCWs to remember your terminal state: RCRTMODEL, RPCVERSION and RCRTWIDTH. If you run Qedit and these JCWs are already set, Qedit does not need to do the status requests of your terminal. To reset these JCWs and force Qedit to re-identify the terminal, use the Set Visual Stop command. You can set a fourth JCW, RCRTSTRAPSGH, to request nondefault handshaking in Line mode. The fifth JCW, RLABELDEFAULT, is described under "Function Key Labels".

RCRTMODEL JCW

This JCW can have any of these values:

 

0

Don't know terminal model yet, will check it

1

This is not an HP terminal, won't bother checking it

1234

This terminal or emulator is not fully-compatible with an HP terminal

2645

This is an old HP terminal without function key labels

2392,etc.

This is a newer HP terminal with labels

2393/2397

This terminal can have up to 160 columns of display

7009

A 700/9x terminal with 132-column ability

 

If you are using a 2645, you can save one status-request timeout by doing setjcw rcrtmodel = 2645 before you :Run Qedit. If you are not using an HP-compatible terminal, you can avoid all timeouts by doing setjcw rcrtmodel = 1 before entering Qedit.

Type 1234 Terminal or Emulator

Set the RCRTMODEL to 1234 if the terminal or emulator you are using does not support all the standard HP terminal features. For example, you should use this setting with hpterm. hpterm is a UNIX terminal emulator running under the X window system. It's a basic 2392 emulator. hpterm can not identify itself to Qedit, nor let Qedit change the display width by escape sequence (although you can configure the display width manually).

When RCRTMODEL is set to 1234 before you run Qedit, Qedit functions in the following manner:

1.        It accepts the terminal as a terminal that is capable of more than 80 columns of display memory and of doing full-screen mode.

2.        If you set RCRTWIDTH[Help7]  to some value between 81 and 256, Qedit accepts it as the manually set display width.

3.        If you do not set RCRTWIDTH, Qedit attempts to sense the current display width and sets the jcw accordingly. The maximum width is 256 columns. Qedit can support up to 999 columns but, in these instances, the width has to be entered using the RCRTWIDTH variable or the Set Term Columns[Help8]  command.

4.        Qedit sets the option that eliminates changes to display width: Set MarginFixed On.

This option also ensures that the right margin is always set at the right edge of the display width. Normally the right margin is set at the last valid column of the file, which might be less than the display width. You can use this option with other emulators if you wish to stop Qedit from changing the display width.

Please read the section on Set Visual Marginfixed[Help9]  to learn about its advantages and disadvantages.

5.        If you use the Set Term Columns command to specify a new width, Qedit does not attempt to change the terminal with an escape sequence. Instead, it displays the following message and waits for you to change the width manually:

Please change display width and press Enter:

Qedit does not verify that you have done this correctly, so if you make a mistake, do another Set Term Columns command to fix the width.

6.        Set Visual Stop[Help10]  normally resets all the jcws to their default state, forcing Qedit to re-identify the terminal. However, for hpterm, the RCRTMODEL and RCRTWIDTH jcws are not reset, since the terminal cannot  be identified automatically. If you wish to stop using 1234 mode, you must reset RCRTMODEL to 0 manually.

7.        Set Visual Widen[Help11]  should normally be set to 76 or 80 (default) with hpterm. Otherwise you will not be able to use the extra columns beyond 80.

RPCVERSION JCW

RPCVERSION can have any of these values:

 

0

 

don't know if this is Reflection, will check it

1

 

this is not Reflection, or it is too old

wXyyy, where

 

 

 

w=0

for display width can be expanded

 

1

for display width cannot be expanded

 

2

for 132-column VGA in Reflection

 

X=0

for DOS Reflection

 

1

for Macintosh Reflection

 

2

for Windows Reflection

 

5

for Qcterm emulator

 

yyy=version number

(420 = 4.20)

 

You cannot do the :Reflect command if Xyyy equals 150 or 200. This same value is shown in Verify Visual as {Reflect=420}; if it says "Col=80 max", this PC emulator was unable to make display memory wider.

RCRTWIDTH JCW

This JCW is usually 80 for 80 columns of display memory. But if your terminal or PC is configured with more than 80 columns, Qedit sets this JCW to that width. Qedit must determine the width of display memory in order to properly fold listings of lines that will overflow that width.

To change your Line mode display width while in Qedit, use Set Term Columns[Help12] .

RCRTSTRAPSGH for Handshaking

The G and H straps of the HP terminal control datacomm handshaking. If you pull up your Terminal Config screen, it should look something like this:

InhHndShk(G) NO       Inh DC2(H) NO

Since these are "inhibit" straps, NO actually means "yes, do the handshake". G and H control whether the terminal waits for a DC1 and/or DC2 prompt character from the computer before sending input, such as on terminal status requests or upon pressing Enter in block-mode. If the straps are configured incorrectly, the symptom is a hung terminal (i.e., the terminal is waiting for a prompt character that is never going to come, or the terminal has sent the data before the computer was ready because it didn't wait for the prompt).

By default, Qedit sets these straps the way it appears will work best, based on your CPU and Term Type. The settings differ between Line mode and Visual mode.

Line Mode. Qedit starts execution in Line mode and immediately attempts a status check of your terminal. With a DTC or ATP, this usually requires a handshake, so Qedit should set G and H to NO. If you are using an X.25 network or a LAN, the network provides buffering of data sent by the terminal, so Qedit usually inhibits handshaking. These Line mode rules apply to both MPE V and MPE/iX.

 

Line Mode:

Serial

X.25/LAN

 

G=NO, H=NO

G=YES, H=YES

 

Block-Mode. The situation in Visual mode is more complicated. You are in block-mode and when you press Enter, your terminal wants to send a screen of memory. To summarize the recommended G and H values:

 

Block-Mode:

Serial

X.25/LAN

MPE V

G=YES, H=NO

G=YES, H=YES

MPE/iX

G=YES, H=YES

G=YES, H=YES

 

MPE V has a complex system to stop your terminal from sending the data until the ATP is ready and there are enough memory buffers available in the CPU. The terminal sends a DC2 when you press Enter and MPE replies with an Escape code to Home Up and a DC1 to trigger the transfer. This arrangement only works if G=YES and H=NO.

MPE/iX improves the speed of block transfers by eliminating the Home Up and the DC1 trigger. Instead of sending a Home Up Escape code, MPE/iX enables a terminal option to do an automatic Home Up when you press Enter. That is why block-mode does not work on some older terminals. Instead of the DC1, the DTC provides a typeahead buffer for the entire screen contents when you press Enter in block-mode. Qedit sets G=YES, H=YES to inhibit handshaking on a DTC while in block-mode. However, the DTC does not have unlimited buffer space, so it uses XON/XOFF pacing to control the flow from the terminal. You must enable your terminal's XON/XOFF Transmit Pacing, which is not enabled by default.

Using block-mode over an X.25 network or LAN can be tricky. Theoretically, the network provides full buffering and no handshaking is needed, so set G=YES and H=YES on both MPE V and MPE/iX. However, the buffers may not be large enough for the transfer that Qedit makes in Visual. MPE/iX must work with the network to ensure that the terminal is configured to do an automatic Home Up on Enter, otherwise the terminal starts transferring from the position of the cursor at the time you press Enter.

Overriding Qedit. If you are using an unusual X.25 network to connect your terminal to the HP e3000, you may find that Qedit sets G and H incorrectly. Perhaps the network simulates a direct connection so well that Qedit cannot figure out that you are using X.25.

For these situations, Qedit has a JCW that allows you to specify exactly how you want G and H set in Line mode.

:setjcw rcrtstrapsgh = n

 

n

G

H

 

0

no

no

(handshaking active)

1

no

yes

 

2

yes

no

 

3

yes

yes

(no handshaking, X.25)

 

Qedit only reads and never changes the value in this JCW.

To override the setting of G and H in Visual mode, use the Set Vis DTC option, setting it ON or OFF. You may have to experiment to find the right setting.

G & H Summary. In block-mode, Qedit decides how to set G and H. You can override that decision by doing Set Vis Classic On or Set Vis DTC On. When Qedit returns to Line mode, it needs to reset the G and H straps to some value. Again, Qedit makes a choice of its own, but it may not work on all networks. Therefore, the JCW allows you to override the reset values for G and H when exiting from full-screen mode to Line mode.

Trivia. These settings are called "straps" because in the earliest HP terminals, configuration settings were enabled or disabled by inserting a short piece of wire (no bigger than a staple) between two holes in the circuit board. Configuring by way of these short metal "straps" became known as "strapping your terminal". Today, of course, all configuration is done in terminal software by way of on-screen menus.

RLABELDEFAULT JCW

If you set the RLABELDEFAULT JCW before starting Qedit, you can specify what function-key labels appear upon entry into Qedit.

:setjcw rlabeldefault=0   {don't care}

:setjcw rlabeldefault=1   {terminal lacks labels}

:setjcw rlabeldefault=2   {show user keys}

:setjcw rlabeldefault=3   {show modes keys}

:setjcw rlabeldefault=4   {no keys -- blank}

:setjcw rlabeldefault=5   {F1 to F8 labels}

:setjcw rlabeldefault=6   {Qedit's labels}

If you wish to use Qedit's function keys in Line mode, set the RLABELDEFAULT JCW to 6 before running Qedit. To change the function key defaults while in Qedit, set the JCW and then use Set Vis Stop to force Qedit to re-initialize.

The memory lock function is useful because it keeps certain lines on the screen while scrolling the text. This function is controlled by the F6 key on the modes keys. When you start Qedit with something other than modes keys, switching between enabling and disabling memory lock can be annoying. Qedit provides a command to easily toggle memory lock.

If you want to enable memory lock, move the cursor to the last line you want to freeze and enter a dollar sign ($). When you are done, enter a dollar sign and a hyphen ($-) to disable memory lock.

QEDITMGRTRACE JCW

If the QEDITMGRTRACE JCW is set to a nonzero value, Qedit prints tracing messages for the Qeditmgr configuration files.

:setjcw qeditmgrtrace=1

The trace includes the name of each Qeditmgr file that Qedit attempts to open, the :File command that redefined the file (if used), and each command executed from the file.

QEDPARMBITS JCW

Qedit has options which are specified via the Parm= value of the MPE :Run command, such as Parm=64 to ask permission on Exit. If you don't have access to the Parm= option, you can put those values into the QEDPARMBITS JCW instead:

:setjcw qedparmbits=64

:run qedit.pub.robelle

The QEDPARMBITS JCW is only effective if the Parm= value received by Qedit is 0 (i.e., no Parm= option on :Run or Create).

QEDCURWFILE Variable

Qedit updates a variable, QEDCURWFILE, with the name of your current or last workfile. This gives you the ability to reference the current workfile easily from within a command file without having to pass it in as a parameter.

QEDSTOREDPWD and QEDPROMPTEDPWD Variables

When the Qedit for Windows[Help13]  client establishes a new connection, it transmits information about the passwords included in the request. Qedit updates two variables with the information: QEDSTOREDPWD and QEDPROMPTEDPWD. The first variable indicates which passwords are stored with the connection. The second variable indicates which passwords are prompted for.

Values for these variables can have up to 4 characters. Each character represents a password supported by MPE. The user password is identified by the letter U, the account password by the letter A and the group password by a G. If you're using VESOFT's Security/3000 and enabled session passwords, the variables might also contain the letter S.

Both variables are always created. If a variable does not have any of the passwords, it's value is set to asterisk *. For example, if the session and user passwords are stored with a connection, the variables will have the following values:

QEDSTOREPWD = SU

QEDPROMPTEDPWD = *

This gives you the ability to reference these variables from within a command file, a Use file or a Qeditmgr file[Help14] .

Since these variables are accessible from the Qeditmgr files, they can be used to validate proper security procedures and settings. Combined with the Exit command, they can be used to implement tighter system access control. For example, a qeditmgr file might contain the following statements:

/if pos('S', qedstoredpwd) = 0

/   exit Session passwords must be prompted for. Contact system admin.

/endif


Qedit for Microsoft Windows

Here we describe Qedit for Windows. Qedit for Windows client lets you edit local MPE/iX and HP-UX files from a single MS Windows program. It consists of a Windows editing client and an MPE/iX or HP-UX editing server that work together to edit your host files for you. To take advantage of Qedit for Windows, you need both the Qedit client and the Qedit server.

Qedit for Windows uses the popular TCP/IP protocol for communicating between the client and the server (this is the same protocol that you use to access the Web). Configuring the Qedit server software requires creating the correct TCP/IP environment for Qedit for Windows.

By default, the Qedit server uses the MPE/iX Remote Process Management (RPM) service to start each server session. With RPM, the client sends a program name and an Info= string along with logon information to the RPM listening process. The RPM listening process then validates the user logon and starts the specified program with the Info= string. The server process is seen as an MPE/iX session, but the process is not included in your user limit. The Qedit server software is not available for MPE V.

Logon Sequence

When you use an MPE/iX connection to open a file in Qedit for Windows, this is what happens:

1.        A new host session is started, and the user name and passwords are validated (this includes additional logon processing by products such as SECURITY/3000).

2.        The Qedit client asks for the program Ci.Pub.Sys to be run with an Info string. For example,
 qedit.pub.robelle "-d<ip-address>"
The "<ip-address>" is the IP address of the Qedit client.

3.        The Qedit process starts, and it verifies that you are authorized to use Qedit in server mode.

4.        Any system-wide Qeditmgr files are always processed. Processing account and group Qeditmgr files is optional and must be enabled in the client.

5.        The requested file is opened.

6.        A response is sent to the client.

It is important to note that logon UDCs are not executed as part of this process. Any environment variables or file equations that are set up as part of a logon UDC will not be in effect for the Qedit server process.

The default protocol is usually sufficient at most sites. However, some customers use firewall devices that further restrict access to their HP e3000, in which case the default protocol might not work.

For this reason, the server offers the Firewall protocol. Because the Firewall protocol needs to have a Qedit listener running at all times, you should add it to your system startup procedure. If the job is not running, all new connection requests are rejected.

:stream qserver.qeditjob.robelle

Currently, the only way to stop the job is to abort it.

With this setup, the server is run as a listener similar to a UNIX daemon. It waits for incoming connection requests on a specific port number. Like the HP-UX server, the default port number is 7395. If you want to use a different port, you have to modify the Qserver job stream. Upon receiving a request, the listener passes the information down to RPM, which then takes over.

QEDSERVMODE JCW

The Qedit server process always executes the commands in the system-wide Qeditmgr files (e.g., Qeditmgr.Pub.Sys). Processing of the account and group Qeditmgr files can be enabled in the client. To indicate that you are using the Qedit server in either the server or the non-server mode, which are not exactly the same, we provide a JCW called QEDSERVMODE. QEDSERVMODE is set to zero (0) if you are in non-server mode, and non-zero if you are in server mode. If you are using the Qedit server, you should modify your Qeditmgr file so that few, if any, commands are executed in server mode. For example,

if Qedservmode = 0 then

   set extprog mpex.pub.vesoft

endif

The Qedit server can only communicate with Qedit clients. To help system managers see what is happening with the Qedit process, Qedit for Windows writes to three log files: the access log, the error log, and the trace log.

Console Messages

If Qedit cannot access any of its log files, it writes the log message to the system console. You can also enable console logging with the Debug command in the Option menu of the Qedit client. If someone is having trouble establishing a Qedit for Windows connection and the Qedit log files on the host do not include a message for this connection, check the system console. If Qedit was unable to open the log files, it probably reported the message on the system console.

Access Log

Every time a Qedit client makes a connection to the server process, an entry is written to the access log file in which the IP address of the client is logged. The numeric for the IP address is logged, along with the port number used to communicate with the client.

Error Log

Any error conditions encountered by the Qedit server process are written to the error log file. If you suspect a problem between the client and the server, start your diagnosis by looking at the end of this log file.

Trace Log

By default, Qedit does not log messages to the trace log file. However, you can enable trace file logging by using the Debug command in the Option menu of the Qedit client. The trace log file can grow to become very large because Qedit messages are constantly being added to it. These messages assist in understanding the communication between the Qedit server process and the Qedit client. In many cases, their detailed information is the only way to diagnose a problem.

Log File Names

If you run Qedit as Qedit.Pub.Robelle, the three log files are located in the Qlog group of the Robelle account. If you renamed Qedit or run it from a different group or account, the group and account names for these log files will automatically be adjusted. See the chapter "Installing Qedit" for more details.


Qedit Issues and Solutions

Walker Richer & Quinn produces Reflection, the well-known terminal emulator for IBM PCs, which can be combined with Qedit in a number of useful ways.

RPCVERSION JCW

When you run Qedit, it attempts to detect what type and version of Reflection you are using. The RPCVERSION JCW will be to one of these values:

 

0

don't know if this is Reflection

1

this is not Reflection

xxxx

type and version of Reflection installed

 

For more details on RPCVERSION, see JCWs under the main ACCESS help keyword.

Using a Command File to Start Up

At startup, Qedit usually attempts to identify the terminal model number. This involves some invisible interaction with the terminal (status requests, etc.). Suppose you have a Reflection command file that runs Qedit and then executes a Qedit command:

transmit "run qedit.pub.robelle^M"

wait 0:1:0 for "^Q"

transmit ":mail^M"

This sequence of commands now fails, because the :mail command is transmitted as the terminal status response. To fix this command file, wait for the Qedit prompt ("/") and then a DC1 (Control-Q):

transmit "run qedit.pub.robelle^M"

wait 0:1:0 for "/^Q"

transmit ":mail^M"

Alt-Y vs. :Reflect

Q: Why do some Reflection command files work fine when I execute them from the Alt-Y command line, but go screwy when I execute them using Qedit's :Reflect command?

A: Qedit's :Reflect command sends an escape code to Reflection to invoke the command, then Qedit waits for Reflection to send back a status code to indicate when the command is finished. While Qedit is waiting for the result code from Reflection, it isn't capable of executing other Qedit commands - it's already executing a Qedit command! The only thing that Qedit is capable of doing while it's waiting is to execute any MPE commands that Reflection might send to the HP e3000. The reason why MPE commands must be accepted is that Reflection sends a :Run command for PCLINK whenever a file transfer is requested.

As long as the command or command file doesn't attempt to transmit any data to the HP e3000, :Reflect will probably work the same way as Alt-Y.

For example, here is a Reflection command file that works from Alt-Y, but not from :Reflect.

; BYE

; This command file gets me out of Qedit, logs me off

; the HP e3000 and exits from Reflection.

;

transmit "exit^M"

wait 0:01:00 for "^Q"

transmit "yes^M"

wait 0:01:00 for "^Q"

transmit "bye^M"

wait 0:01:00 for "CONNECT"

wait 0:00:05

hardexit

Qedit and Reflection File Transfers

Reflection file transfers work at the MPE level or within Qedit, without any change to Reflection's Host Startup Sequence. Reflection, versions 2.2 and later, has the ability to read Qedit's special files and download them to your PC as ordinary flat files. You don't need to do a Keep before a file transfer.

If you transfer a PC file to your 3000 and try to Open it in Qedit, you get an error message.

Error: you can only Open Qedit workfiles (code=111)

Open is Qedit's command for getting into a file quickly. You can only Open files that are in Qedit format. To edit any other file type, you must Text it instead (Text is slower then Open). Qedit users are accustomed to instant access to the files they need. Reflection 2.2 and later can upload to Qedit files as well as download them. You simply append ";Q" to the host file name on the file-transfer screen or in your Send command line. Reflection does the rest.

When you work in Qedit, you are working on files that have a language (Set Lang FORTRAN, Pascal, COBOL, SPL, Job, or Text) and a record length (Set Length). If you copy a Qedit file to your PC and then back again to the HP e3000, Reflection 2.2 returns a file with the same Qedit attributes by writing a label to the PC file that describes the Qedit file:

RECSIZE=80; LANGUAGE=3

When Reflection transfers a file to the HP e3000 with the ;Q option, it uses the label in the PC file to create a proper Qedit file. Thus, you can send a COBOL file from Qedit to your PC and return it to Qedit later and still have it recognized as COBOL. Here is the complete list of Language codes for Qedit files:

 

1

SPL (72-byte records)

2

FORTRAN (72-byte records)

3

COBOL without comments (66-byte records)

4

RPG (80-byte records)

5

Job (80-byte records, Keep UNN)

6

Text (Set Length sets record size up to 256 bytes)

7

Pascal (72-byte records)

8

COBOLX with comments (74-byte records)

9

Data (Set Length sets record size up to 8,172 bytes)

 

Qedit files are downloaded without sequence numbers, since PC tools seldom use sequence numbers. When a PC file is uploaded into Qedit, new sequence numbers are assigned to the lines. If you download a Qedit file containing PC data, such as a Reflection command file or an Assembler program, you don't want a label at the start. Use Set Lang JOB for such files, since a JOB file has 80-byte records without sequence numbers. When you download a Qedit "job" file, Reflection does NOT add a label to it, since "job" is the default format when uploading to Qedit format.

Form Feed Causing Return/Line Feed

In Modify, the Lengthen control code (Control-L) means edit the end of the current line. However, in recent versions of Reflection, ^L is executed by the PC as you type it and causes a Return/line feed. If this is happening to you, you can change the default in Reflection. Press Alt-Y for the Reflection command line, type Set Do-Form-Feeds No, press Return, then type Save and press Return again to save the new default to your current configuration file.

Typeahead and Visual Mode

On MPE/iX, Reflection's typeahead must usually be disabled while in Visual mode, since MPE/iX no longer sends the DC1 trigger needed to make typeahead work. Qedit takes care of disabling and re-enabling typeahead for you, except for recent versions of Reflection, where typeahead has been rewritten to work even on MPE/iX.

Please Note. The Reflection typeahead has nothing to do with the MPE/iX typeahead feature. When you use the MPE/iX typeahead feature, Visual mode disables it and re-enables it when you go back to Line mode.

Completion Codes

If you are using version 2.00 or later, Qedit automatically enables completion codes on Reflection commands. If these have been disabled with Set Disable-Comp-Codes YES, you will find that your terminal hangs when Qedit attempts to execute a Reflection command; just press Return to get out of this situation. To avoid this situation, you press Alt-Y, type Set Disable-Comp-Codes NO, press Return, then type Save and press Return again to save the new default to your configuration file.

Controlling the PC

The Reflect command allows you to execute any Reflection PC command from within a Qedit usefile, UDC, or command file. This allows you to do things like automatically download and upload files and run programs.

The Reflect command can also be used in batch jobs to control PCs that are directly connected to the system, even back them up. For more details, see the :Reflect command.

Accidental Exit from Reflection

If you use Reflection for DOS, and you press Alt-X while in Visual mode, some versions of Reflection allow you to recover.

Get back into Reflection. Your usual method is okay, unless you use a command file that performs other deeds, such as logging you on. A command file would send the logon commands to a puzzled Qedit session, so use "r1" at the DOS prompt instead. Back in Reflection again, press Alt-M for the Modes function keys. Ensure that none of the labels on the display show an asterisk (i.e., are activated) except for the Remote Mode key.

Press Return or Enter -- Qedit accepts either one. If you're back in your Visual mode session, Qedit prints the status line with an error. It might be No // at the end, so no UPDATE (see qscreen) or maybe Read error on CRT. Try again or reduce speed. Type an asterisk after the home line arrow (===>), and press F7. If the function keys are properly defined for Qedit, your file appears. Any changes you made to the screen between your last update and the time you pressed Alt-X are lost. The qscreen file is of no use in this case. Sometimes Qedit is slow to display the status line and error message. If you see some flashing on the screen that hints at activity, be patient. But if nothing happens when you press F7, or if random characters appear right after the asterisk, it probably means that F7 is not defined properly. But we can fix that.

Display the menu to define the function keys by pressing Ctrl-F9. To set these back to the default values, press F3. The labels become F1, F2, F3... Press F9 to activate the changes and go back to your regular screen. Pressing F7 should now work; then press Return. Qedit may display an error message, such as "UNKNOWN COMMAND NAME", but you will still get your file back. Again, changes to the screen after the last update will have vanished.

In the worst case, you will not be able to recover. Log on from scratch. When you open your file, Qedit will display the message: Warning: Recovery. Your file will be current up to your last update.

Changing the Exit Keystroke

The Alt-X keystroke for exiting from Reflection back to DOS is too close to the Alt-D (delete line) and Ctrl-X ("re-think") keys. Accidentally pressing Alt-X and shutting down Reflection in the middle of a Visual screen is pretty disastrous. WRQ has added a "remappable keyboard" in Reflection that allows the user to specify which keys perform what functions. The exit-to-dos function can be activated by a different, harder-to-type key sequence.

To remap your keyboard in Reflection for DOS, first create a DOS file called REMAP.KBM with the following lines:

KEYBOARD-ID = ENHANCED

TERM = HP

alt x       = null

alt ctrl x  = exit-to-dos

Then activate the changes by typing C:> KEYMAP REMAP.KBM R1.CFG at the DOS prompt. See your Reflection user manual for full details. Reflection for Windows also has a remappable keyboard, but uses a different method of configuring it. See your Reflection for Windows on-line help or user manual for details.

Running Qedit on MPE/iX is the same as running it on MPE V, with a few minor differences. We have made a number of changes to Qedit (regarding EOF and disc space) due to differences between the MPE V file system and the new MPE/iX file system.

Unresolved Externals on MPE/iX 4.0

If you try to run Qedit on MPE/iX 4.0, you might get the following errors:

UNRESOLVED EXTERNALS: _thd_errno  (LDRERR 512)

UNRESOLVED EXTERNALS: _thread_set_error  (LDRERR 512)

UNRESOLVED EXTERNALS: thd_lock_lang_mutex  (LDRERR 512)

UNRESOLVED EXTERNALS: thd_unlock_lang_mutex  (LDRERR 512)

These messages indicate some missing routines from the C library. If you are not planning to upgrade to a more recent version of MPE/iX, you should contact Robelle technical support. We can provide you with an additional file that will fix these problems. Someone on our technical support team will be happy to ship this file to you and instruct you in its installation.

Compiling on MPE/iX

MPE/iX comes with both CM compilers from MPE V and NM compilers. The CM compilers work the same way that they did with MPE V. With Qedit, we provide an XL library that allows the NM compilers to read Qedit files as if they were standard files (the file name is Qcompxl.Pub.Robelle). You only need to change the compiler command files in Pub.Sys so that they have an "XL=" clause on the :Run command. We provide a job stream to make the needed changes to the command files for you; see the "Installing Qedit" chapter. Once the changes are made, the NM compilers can read both Qedit files and Keep files, whether activated within Qedit or at the MPE/iX prompt.

:pasxl source

:run qedit.pub.robelle

/text source

/pasxl *

XDB: the Symbolic Debugger

If you :Run Xdb.Pub.Sys with XL= "qcompxl.pub.robelle", XDB can display source files that are in Qedit format. For COBOL/iX, the debugger uses the compiler listing instead of the source file, so an interface isn't necessary (the compiler, not XDB, reads the Qedit file).

Command Files and Variables

MPE/iX has command files, variables and the :While command. All of these work in Qedit as well, including Hppath when looking for command and program files. Qedit supports command files, :While commands and Hppath on MPE V (using Set Hppath), but doesn't provide variables (although you can insert JCW values into both command files and UDCs by using the !cierror notation).

Visual Mode

On MPE/iX, it is very important that you configure your terminal with XON/XOFF Pacing (both Receive and Transmit). If you have Transmit Pacing set to None, Visual may fail with "Insufficient System Resources". If you use Qedit Visual on the console, you should configure the terminal for ENQ-ACK protocol as well (prior to MPE XL 2.0).

If you have problems with DC1 hangs, first ensure that you are logged on as TERM=10 (or another Term Type that prompts for input with a DC1); you can determine this by enabling Display Functions, then press Return and see if the computer prints a DC1 Control Character after the regular prompt character). Second, check that you have enabled XON/XOFF Pacing on your terminal. Third, see if your modems are configured to pass XON/XOFF through. Fourth, try disabling typeahead.

EOF vs. LIMIT

Under MPE/iX it is very common to have a LIMIT of 4 million and an EOF of 400. This is because the large LIMIT does not impose a large extent size on the MPE/iX file, due to the unlimited number of extents. When Qedit Texts a file, it remembers the number of records beyond the EOF and adds that count to the size of the file on a later Keep. Qedit now restricts that extension beyond the EOF to 100,000 records.

Disc Space for Files and Xltrim

MPE/iX cannot operate on a file unless it has about 256 sectors of disc space allocated to it. As a result, Qedit files which used to occupy 30 sectors often occupy 256 sectors or more. In effect, the minimum extent size increases dramatically. MPE/iX has enhanced the FCLOSE intrinsic to deal with this problem. If you specify bit 11 of the close options parameter, MPE/iX releases the disc space beyond the EOF while the file is not in use. Qedit uses this option, which is operational in version 1.1 of MPE XL.

See also the Xltrim command, which allows you to trim back unneeded disc space for a group of files in a single command.

Extents

Qedit still creates files on MPE/iX with the number of extents (1-32) that would be desired on MPE V. The reason is that this information, while ignored by MPE/iX in allocating disc space, is remembered with the file, and is used if the file is transported to MPE V via STORE/RESTORE.

HPDesk users can configure an external editor. However, HPDesk allows only one option for this editor: it must be invoked by passing the file name to edit via the Info= string.

Configuring HPDesk

To change the default editor in HPDesk, you need to modify your individual Profile. To do this, enter HPDesk as you usually would. From the main menu (choice 0), select option 10 (Admin.). From the administration menu, select F2 (Profile). From the profile menu, select F2 again (Next Options). You should see a screen similar to:

Edit and Create Options

Entry method for creating messages/comments ...   [ ]

 

Entry method for creating text items ...          [ ]

 

Editor for editing text items                     [ ]

 

    Values can be:

 

    1. Line by line text entry

    2. Screen text entry

    3. Slate editor

    4. HPWORD or screen for non-HP terminals

    5. External editor                          

You must make two sets of changes to this menu. First, enter "Qedit.Pub.Robelle" as the external editor (value 5). Second, change each of the three editor options to 5, then press Enter. After your changes, the screen should look like the following:

Edit and Create Options

Entry method for creating messages/comments ...   [5]

 

Entry method for creating text items ...          [5]

 

Editor for editing text items                     [5]

 

    Values can be:

 

    1. Line by line text entry

    2. Screen text entry

    3. Slate editor

    4. HPWORD or screen for non-HP terminals

    5. External editor Qedit.Pub.Robelle

Configuring Qedit in HPDesk

Because HPDesk does not provide any Parm= options, you can pass in a Parm value by placing it in the QEDPARMBITS JCW. Configuration commands can be placed in Qeditmgr files.

DeskQed

Older versions of Qedit did not support passing in the file name via Info=. Instead, a program called DeskQed acted as an interface between HPDesk and Qedit. You no longer need to use DeskQed, but we document DeskQed here as a reference for those who are still using it.

Because old version of HPDesk does not provide any Parm= or Info= options, the DeskQed interface uses two JCWs, DESKQEDPARM JCW and DESKQEDVISUAL JCW, and a default command file, to configure Qedit for editing from HPDesk.

DESKQEDPARM JCW

When Qedit starts up, it always executes configuration commands in Qeditmgr.Pub.Sys. Optionally, you can get Qedit to execute commands in Qeditmgr.Pub.logonaccount and/or Qeditmgr.logongroup. In the HPDesk/DeskQed environment you use these optional Qeditmgr files by setting a JCW before executing HPDesk.

:setjcw deskqedparm=1 {use Qeditmgr.Pub.logonaccount}

:setjcw deskqedparm=1 {use Qeditmgr.logongroup}

:setjcw deskqedparm=3 {use both of the above}

DESKQEDVISUAL JCW

DeskQed assumes that you do not have an HP terminal and that you would like to edit messages in Line mode. Setting the DESKQEDVISUAL JCW to any nonzero value places Qedit directly into Visual mode when editing an HPDesk message:

:setjcw deskqedvisual=1

Default Usefile

When DeskQed creates Qedit, it executes an optional usefile called DeskQed.Qlibdata.Robelle. You can add default configuration values to this file (e.g., Set Limits Sys Off); you should only use Set commands in DeskQed.Qlibdata.Robelle.

Version Entry Point

DeskQed does not print any banner or version number when it is run. To find the DeskQed version number and the status of the two configuration JCWs, use the version entry point:

:run deskqed.qlib.robelle,version

DESKQED/QLIB/Copyright Robelle Solutions Technology Inc. 1988

(Version 0.4)

 

DESKQEDPARM    =  0

DESKQEDVISUAL  =  1

Notes on DeskQed

DeskQed requires the temporary file DeskQscr. If you open this file in Qedit, invoke HPDesk, and then try to edit a message, DeskQed fails. A special message is printed in this case, warning you to return to Qedit and close DeskQscr before invoking HPDesk. Your original message remains unchanged in HPDesk.

DeskQed always runs the program file Qedit.Pub.Robelle. There is no way to change this.

When you install Qedit, we provide interfaces to most of the MPE compilers, but you may want some other programs to be able to read Qedit files. Some programs, such as PowerHouse and Splash, already read Qedit files. For a list of such tools, type help tools.

There are four ways to get a program to understand Qedit workfiles: Qinput, Qcompxl, Qeditaccess, and Qedify.

Qinput

If you don't have the source code, your can try running the program inside Qedit with the Qinput option. See the :Run command for details. This option will pass a Qedit workfile into a program through a message file.

Qcompxl

An NM program that reads a source file may be able to read Qedit files if you run it with XL="Qcompxl.Pub.Robelle". This is the same interface we use for the NM compilers from HP. It simulates most of the file system intrinsics and makes Qedit workfiles look like ordinary disc files.

Qcompxl cannot be combined into a single XL file along with other XL files, not even other Robelle XL files. In particular, do not put Qcompxl into the System XL: you may get a system abort.

Qeditaccess Subroutine

If you have the source code, insert calls to the Qeditaccess routine and recompile. Qeditaccess is a part of the Qlib Contributed Library and is described in Qcopy.Qlibdoc.Robelle. It can read either Qedit files or regular Keep files and has been easily merged into many software tools.

Software vendors and Qedit users are authorized (even encouraged) to include Qeditaccess in programs they distribute. A native-mode version is available as well.

Qedify

Some CM programs can be converted to read Qedit workfiles by running them through the same Qedify program used to make the MPE compilers smarter. This does not work for all programs; they must be sequential processors and must only call the intrinsics that the Qedit Interface Library "traps" (i.e., no calls to Freaddir on Qedit files and no calls to the Pascal run-time library). A number of programs have been successfully "qedified": DBSCHEMA, Basic Interpreter, RJE, and MRJE (be certain to disable Control-Y), and Fastran.

The first step is to build a new group in your account called Q. To convert a program, copy the program file into the Pub group of your account, then

run qedify.pub.robelle,q;parm=1.

You are prompted for the file name, an option that determines how to interpret Qedit files, whether to process $include, whether to disable the Control-Y "Abort" message, and whether to always run the program in DS priority. Then Qedify modifies the program file to contain calls to the CM compiler interface.

Here is an example of Qedify:

run qedify.pub.robelle,q;parm=1 {,Q and Parm=1}

What is the name of the program file?

DBSCHEMA

 

You have five options for how to interpret Qedit files

for your program.  Remember that there are many types

of Qedit files (COB,COBX,SPL,FTN,RPG,JOB,TEXT,PASC)

Which input-format option do you select?

1.  Like COBOL, sequence numbers in columns 1 through 6.

2.  Pascal-Fortran source, numbers in columns 73-80.

3.  RPG, no sequence numbers, $control in column 6.

4.  No sequence numbers at all, 80 data columns.

5.  Take format from type of input file (max 80).

Input-format option =

4

 

The Qedit library can look for and process $include and

$qdebug commands.  By default, it leaves this to your

program.

 

Enable $include processing? [no]:

N

 

Would you like to disable the Control-Y abort

question of the Qedit interface? [no]:

Y

 

Always run this program in DS priority? [no]:

N

 

DBSCHEMA

CONVERTED FROM PUB TO Q

The improved program file now resides in the Q group of your account, and has the same file name as the Pub file. To run the converted program, you must link it to the Qedit interface routines. For example:

:segmenter

-sl sl.q,400,2

-buildusl tempusl,400,4

-auxusl qcompusl.pub.robelle

-copy segment,qeditlib

-addsl qeditlib

-exit

 

:run yourprog.q;lib=g

Qedify and $Include

The CM compiler interface normally leaves Include commands to the user program, since the CM Interface allows up to 17 concurrent Qedit file opens, which should accommodate any reasonable level of nesting for Include files. If your CM program does not provide an Include facility, you can have the Qedit interface provide that facility for you.

If you answer Yes to Qedify's Include question, Qedify asks you two more questions about processing Include files:

Would you like $included lines to show their sequence

numbers (the default is to show spaces instead)? [no]:

 

There is an option to turn $INCLUDE lines into comments.

What kind of comments do you want?

(0=none,1=SPL,2=Pascal,3=COBOL,4=Fortran?) [none]:

When you use Qeditj1 or Qeditj1a to convert your CM MPE compilers, FORTRAN, COBOLI and RPG are converted with $include processing enabled. All other compilers, including Trancomp, Ftn (77), COBOL, COBOLII and Pascal let the compiler process Include files. You could re-Qedify a particular compiler by hand if you wished to override these choices.

Versions Qedit 4.7 and later support files with lines up to 8,172 characters. If you are trying to edit a file wider than that, Qedit truncates the lines to the maximum. To support these wide files, a new workfile format has been created and is generally referred to as Wide-Jumbo.

Using the New Command

You can create a new, empty Wide-Jumbo workfile by using the New command or an option on the Text command.

When creating a new file, you can force it to have a Wide-Jumbo format by setting the Language to Data and the Length to a value larger than 1,000 before issuing the New command.

/Set Language Data

/Set Length 2500

/New newwork

These commands create a new permanent workfile called Newwork. If you want to create a scratch file with these attributes, enter the New command by itself.

Using the Text Command

If you use the Text command on a file with lines wider than 1,000 characters, Qedit automatically builds a Wide-Jumbo scratch file with the appropriate characteristics.

If you use the Text command on a file with lines less than 1,000 bytes, you can override the Qedit workfile format by appending a workfile format keyword to the workfile name:

 Text workfile,WIDE {forces Wide-Jumbo workfile}

The keyword may be shortened to any leading substring, but the comma is required.

You can use the Wide keyword to override Qedit's decision and force it to use the wider format.

Let's assume that we have a file called Funny with 80-character lines. To read this file into a Wide-Jumbo workfile, you would enter:

/text wrkwide,WIDE=funny  {this creates a Wide-Jumbo workfile}

Language is now JOB

678 lines in file

/v open

Open: WRKWIDE.SRC.DEVACCT JOB W-jumbo Length:80 Margins:1/80

The syntax requires that you name the workfile and make it permanent. Notice that Qedit still assigns a Language based on the original file characteristics. If you want to go beyond 1,000 characters, you have to change the Language and Length settings after using the Text command on the file.

If you want a scratch file that is a Wide-Jumbo workfile, you should use

/Set Lang Data

/Set Length 2500

/AQ 1=funny

Character strings can be used of line numbers to qualify lines on most commands. In its simplest form, a command can have a single string using all the search window defaults.

/List "enhancement"

The search string can be further qualified using temporary window settings as in:

/List "enhancement" (Upshift 20/50)

This example searches for the word enhancement regardless of the case used in columns 20 to 50.

Qedit allows up to 10 search strings on a single command. Individual strings are separated from each other with the OR keyword. Each string can have its own temporary window.

/List "enhancement" (U 20/50) or "bug" or "customer" (1/30)

The search range can be different depending on the command it is used on. For example, a List command searches all the lines in the file by default while a Find command starts from the current line. The search range can be specified on individual commands using a rangelist[Help15] . A rangelist is often specified using line numbers (absolute or relative), special keywords[Help16]  (First, Last, All) or characters (@, *, [, ]). To define a block of lines, the user can enter 2 line numbers separated a slash "/" e.g. 1/6.

It is also possible to define a block of lines using a string range. This syntax allows the use of strings to define the start and end of the range. A string range can also be combined with a numeric line range to further define the block. Here are some examples:

/List "start-proc" / "end-proc"

/Change "a" "b" "start-proc" / "end-proc"

/Delete "start-proc" / "end-proc" 20/100

The List command above finds the first occurrence of start-proc in the file and uses it as the range start location. It then finds the first occurrence of end-proc starting from the start location. It uses that line as the range end location. Finally, it lists all the lines between the 2 locations. By default, List starts at the beginning of the file.

The Change command above replaces all occurrences of the letter a with a b in the lines between (and including) start-proc and end-proc. By default, Change starts at the current line.

The Delete command above removes all the lines between (and including) start-proc and end-proc found in lines 20 to 100. By default, Delete starts at the beginning of the file.

A string range does not behave like a rangelist e.g. 1/20 in all cases. For example, the first statement is not a valid construct with the second statement is.

/Delete "bug" "start-proc"/"end-proc"

Error: Linenum

/Delete "bug" 10/30

You can use the Find command and the ZZ marker to work around the problem. If you enter a simple strings on a Find command, Qedit stops at the first string occurrence and sets the current line. You can then perform any  operation on that line or use it as a starting point. If you specify a line range, the Find command sets the ZZ marker to the block of lines. You then use the ZZ marker on subsequent commands.

/F "start-proc" first

   5     Start-Procedure.

      (1)^

/F "start-proc"/"end-proc" first

Lines 5/11 saved in ZZ

/Delete "bug" zz

    8    _bug-display-section.

1 line Deleted!    


Using Qedit with MPE Programming Languages

Here we describe how to combine Qedit with popular MPE programming tools.

When you install Qedit, we "fix" the MPE compilers to read Qedit workfiles so that you won't need to Keep before compiling. Many of the most popular third-party tools, such as PowerHouse and MPEX, already read Qedit workfiles. We also provide Editerr, a method for trapping and fixing compile errors with COBOL, Pascal, SPL, and C/iX.

/set lang cobol      {what type of source file is this?}

/compile *           {compile current file and language}

/prep                {prep $oldpass into $newpass}

/list "cust"(smart)  {Smart means ignore "cust-rec"}

/set udc udc.catalog.robelle  {:COBERR and :EDERR}

/coberr cob74xl,*    {compile and display each error}

/ederr pascal,*      {same for Pascal}

Qedit's :Editerror command traps compiler syntax errors and pulls up the offending lines of source code for you to correct. Of course, you need a custom link to each compiler for this to work (:Editerror links are included in the SPLash! compiler from Software Research Northwest). We provide a utility, Editerr, which formats compiler errors for HP's COBOLII (ANSI 74 and 85), SPL, Pascal and C/iX compilers.

Editerr is invoked through User Commands in UDC.Catalog.Robelle. There are two commands: Coberr, which traps compiler errors in COBOL source, and :Ederr, which traps compiler errors in SPL, Pascal and C/iX source. The User Command compiles the source file (you specify which compiler to be used). If there are any errors, the Editerr utility generates a list of errors for the :Editerror command. The User Command then puts you into Visual mode on the line in the source file where the first syntax error was found, and shows the first line of the compiler error message at the top of your screen. To see the next error you press F4. To see the previous error you press F3. Qedit takes care of Opening and Shutting your source files, or Texting and Keeping them if they are not Qedit files.

Editerr can be configured to ignore compiler warning messages, as well as nonstandard COBOL statement warnings. This is done by setting JCWs before running the Editerr program:

:setjcw EditerrIgnoreWarn = 1

:setjcw EditerrIgnoreNonStd = 1 {COBOL only}

The Editerr utility identifies errors in COBOL Copylib members and Include files, and allow you to correct them, as long as you have Write access to the copylib file. For SPL, Pascal, and C/iX, Editerr attempts to identify errors in Include files and allow you to correct them.

/set udc udc.catalog.robelle

/open srcfile                   {or Text it}

/visual                         {make changes, then try one}

                                {of the following commands}

/coberr ,*                      {default is COBOL 85/iX}

/coberr cob74xl custrept.source {compile/fix}

/coberr co * uslfile            {use MPE V compiler}

/ederr pasxl *                  {Pascal/iX}

/ederr ccxl *,objfile           {C/iX}

/ederr spl *                    {SPL}

 

/shut                           {or Keep}

HINT: In general, you use the same syntax as you are accustomed to using for compiling, but you insert the word Coberr or Ederr in front of the command. For example, instead of typing /cob85xl *, you type /coberr cob85xl *.

For MPE/iX systems, a native-mode version of the Editerr program is provided which works with both the compatibility-mode and native-mode compilers. The Qedit installation job, Install.Qeditjob.Robelle, renames the appropriate version of Editerr into production, depending on whether your machine has MPE/iX or MPE V.

Limitations and Restrictions

1.        Editerr attempts to identify syntax errors in Include files for COBOL, SPL, Pascal and C/iX. For COBOL, SPL and Pascal you must compile your source with $control List, and include a comment at the end of each Include file in the form

   ! end $include                {SPL}

   << END $INCLUDE >>            {uppercase or lowercase}

 

   { end $include }              {Pascal}

   (* END $INCLUDE *)

 

   * END $INCLUDE                {COBOL}

These comments are required for Editerr to determine where each Include file starts and ends in the compiler listing. For C/iX, no special options or comments are required.

2.        In order to correctly identify syntax errors in COBOL copylib members, Editerr must determine where each copylib member starts and ends in the source listing. This requires that the source file be compiled with $control List.
COBOL allows copylib members to in turn copy other copylib members. This is referred to as "nesting" copy statements. If you want Editerr to recognize nested copy statements, do not use the NOLIST option of the COPY statement.

3.        C/iX and Pascal source lines are restricted to 80 characters.

4.        The Editerr utility only processes compiler listings that have 132-byte records, with or without CCTL. We recommend that you use the COBERR and EDERR UDCs, which build the compiler listing file with the right characteristics.

Keep in mind that the compiler sometimes trips over its own feet: the line number indicated by the compiler may not be the actual line in error. For example, forgetting to terminate a statement with a period will flag a succeeding statement in COBOL.

PowerHouse 4GL, by Cognos Incorporated, is comprised of several development tools: QUIZ, QUICK, QDESIGN, QTP, QDD and PDL. Qedit/MPE works well with PowerHouse for several reasons:

1.        PowerHouse can read Qedit files. This means that you can Open and Shut files, and can compile without having to first Keep. PowerHouse can read source files up to 256 characters wide, and thus supports all of Qedit's language settings except Data.

2.        QUIZ, QDESIGN, QTP, QDD and PDL can be suspended, to make subsequent invocations faster, and less demanding of system resources.

3.        Qedit can be configured as the default PowerHouse editor, and can thus be invoked from within the PowerHouse tools.

4.        Qedit can edit PowerHouse subfiles.

Qedit takes advantage of these features to give you an integrated development environment for PowerHouse, where you can switch instantly between editing source files in Qedit, and compiling and testing in PowerHouse.

Invoking PowerHouse from Qedit

Qedit has always been an excellent workbench for PowerHouse programmers. The PowerHouse components read original-format Qedit files directly, and all of them (except for QUICK) can be suspended from Qedit for faster invocation. It is also possible to use Qedit "shorthand" when invoking PowerHouse from within Qedit ("*" for current file, "$" for previous), provided the PowerHouse UDCs have been slightly modified.

In the past we supplied modified UDCs for the various PowerHouse versions, but as the UDCs were large, very complex, and changed frequently, supporting every new version became a problem for us. We therefore developed a set of command files to call the UDCs that Cognos supplies with your PowerHouse updates. They allow Qedit shorthand and suspend the PowerHouse tools on exit:

parm auto=$null

anyparm otherparms=ZZZ

file qsource=!auto

if "!otherparms" = "ZZZ" then

  quiz "auto=qsource suspend"

else

  quiz "auto=qsource suspend" !otherparms

endif

file qsource = $null

Note that we have added one parameter to your invocation of the UDCs. This parameter, the file name to execute, must be passed before the other run parameters. You must first set the Cognos UDCs, as they're invoked from within the command files. Note also that UDCs have precedence over command files, so the command files must have different names. We supply the following three command files:

 

QZ.QEDCMD.ROBELLE

{for calling QUIZ}

QD.QEDCMD.ROBELLE

{for calling QDESIGN}

QP.QEDCMD.ROBELLE

{for calling QTP}

 

QUICK doesn't allow suspension on exit, so we haven't supplied a command file for it. You may wish to duplicate the above for QUICK (removing the "suspend" parameter), to allow easy execution of specified compiled QUICK files:

/qk qkscrn

Using these command files, "qz *" will run QUIZ, and execute your current file. On completion, Qedit will ask you whether it should keep QUIZ suspended:

Quiz is still alive.  Okay to HOLD onto it [no]?

Replying "yes" means that subsequent calls to QUIZ will be much faster. Of course, suspending QUIZ keeps the dictionary open (one of the reasons why it is faster), so you cannot change your current dictionary without first killing the suspended process:

/kill quiz  {kill only QUIZ}

/kill       {kill all child processes}

Similarly, you would need to kill and rerun QUIZ to change any other run parameters, such as CC= for conditional compile flags.

Configuring Qedit as Your Editor

Later versions of PowerHouse have a Revise command. This command invokes your configured editor, tells it which file to edit, and optionally, tells PowerHouse how to process that file upon return.

By default, PowerHouse invokes the Editor.Pub.Sys. file. Setting the :File equation

:file cogeditr=qedit.pub.robelle

configures Qedit to be your PowerHouse editor. We recommend that you add this :File equation to your system UDCs. PowerHouse invokes Qedit with a ,Basicentry entry point, and pass a file to be edited via a :File equation for Edttext.

In QUIZ,

> revise

invokes Qedit with the Quizsave file texted. Quizsave contains all the QUIZ statements you have entered since the last Cancel Clear, Save Clear, or Set Save Clear. After making your revisions, you will be asked whether you wish to save your changes when you exit Qedit. Quizsave will then be re-executed by QUIZ. Use the command

> revise filename

to edit a specific filename. On return to QUIZ, that file will be executed. To suppress execution of the edited file on return to QUIZ, use the NOUSE option:

> revise filename NOUSE

See the PowerHouse manuals for a full description of the options available.

Editing PowerHouse Subfiles

There may be occasions when you wish to use Qedit's powerful capability to edit data stored in a PowerHouse subfile. A subfile has file labels containing a PowerHouse "mini-dictionary" of the file's record structure. It is important that your file editor preserve these labels, if you will subsequently use PowerHouse to read the file: Set Work Label On will ensure that Qedit retains the file labels.

As a COBOL user of Qedit, there are a number of topics you should be familiar with.

Selecting a Compiler

There are five possible COBOL compilers you could wish to use: COBOL 68, 74 or 85 for MPE V (CM), or COBOL 74 or 85 for MPE/iX (NM). Use the Set Whichcomp command to select your CM compiler (the one invoked by the :Cobol and :Compile commands).

/set whichcomp cobol 85 | 74 | 68  {Select CM compiler}

/cobol *          {uses compiler program named COBOL}

/cobolII *        {Compiles using the COBOLII compiler}

/cobolI *         {uses CobolI compiler, COBOL 68}

The Qcompxl.Pub.Robelle file contains the XL library, routines that intercept calls to the MPE/iX file system. Use the COB74XL or COB85XL command files once they have been modified to reference this XL.

Sequence Numbers and Comments

The following rules apply to standard COBOL source files. They do not apply to COBFREE files, which are free-format files that do not have line numbers. COBOL statements can start in any column and go beyond column 72. They cannot have comments (tags).

In COBOL source files,the first six columns are reserved for the sequence number. This means that the first column of your text area is actually column 7. When a Qedit file has Set Lang Cobol, the first six columns are not displayed. Instead the sequence number is displayed, in the form 105.1. To check what columns some text is in, use the LT command (list template). You must remember the column numbers when using the Change command to insert or delete columns. For example, you might want to shift the first column three spaces to the right by inserting blanks.

/change 1 "   "   {wrong!}

Error: Target

 

/change 7 "   "   {right}

COBOL statements occupy columns 7 through 72 of each line. Columns 73 through 80 are reserved for comments. If you extend a COBOL statement into this area by accident, you get a compiler error. To keep this from happening, Qedit has two Set Lang values for COBOL. Set Lang Cobol limits your line length to column 72, while Set Lang Cobolx allows you to use the comment area. In normal practice you would do initial development with Set Lang Cobol, then switch to Set Lang Cobolx during maintenance.

/set lang cobolx

/c 73/80 "BobGreen"

Tagging Source Changes

When you have a file Set to Lang Cobolx, you can have Qedit automatically tag source changes with a comment in columns 73 through 80. You might choose to tag the changes with the date of the changes and perhaps the initials of the changer:

/set lang cobolx          {lines contain 80 columns}

/set x "rmg"              {tag changes with a string (COBOLX)}

/set x date               {tag changes with the date (COBOLX)}

/set x yymmdd "bg"        {see Set X for more options}

/set x list off           {suppress listing of the tags}

/set lang cobolx all on   {force all COBOL to COBOLX}

These configuring options can be made the default by putting them in one of your Qeditmgr configuration files. Other options that are useful with COBOL:

/set window(7/72)         {change without shifting comments}

/set wrap on              {wrap overflow lines to column 12}

/list "cust-rec" (smart)  {look for "symbols" only}

/set maxdata 31000        {default Maxdata= for PREP}

Copylib Members

To edit Copylib members in Qedit, put the member name in parentheses and do a :File command for "copylib".

/file copylib=copylib.pub.develop

/text (custrec)            {looks in "copylib"}

/keep                      {saves changes}

/keep (custrec2)           {new member name}

/keep (custrec) copylib2   {different Copylib}

Notice that we can refer to other Copylib files by putting the file name after the member name, rather than having to change our :File command. To create a new Copylib file, use HP's Cobedit program.

To list the member names in a Copylib file, specify a pattern instead of an actual member name.

/list (b@)                 {names starting with b}

/list (@)                  {all names}

Trapping Syntax Errors

The :Editerror command allows Qedit to pull up a compiler syntax error and the offending line of source code and present them to you for correction. Of course, you need a custom link to each compiler for this to work. The COBERR UDC is an error processor for HP's COBOL 74 and 85 that uses the Editerr program to find and fix syntax errors. See above for a complete description.

There are several FORTRAN compilers available to you.

/fortran *              {compile CM FORTRAN 66}

/ftn *                  {compile CM FORTRAN 77}

/ftn 350/700            {compile a line range!}

/set whichcomp ftn 77   {make 77 the default}

/ftnxl *                {native-mode FORTRAN compiler}

If you always compile through Qedit, you can use $include commands to centralize the definitions of COMMON blocks in separate source files. If most of your work is with FORTRAN, you should configure Qedit with FORTRAN as the default language for new files. You do this by putting the Set Lang Fortran command in a file named Qeditmgr.Pub.Robelle. Other options that are useful with FORTRAN:

/set rl graphrl.lib.dev {default RL= on PREP}

/set fortran on         {default for external files}

/set tabs hp on 7 17 27 {customize tab stops}

/set wrap on            {generate continuation lines}

/list "custbase"(smart) {ignores embedded spaces!}

To tell Qedit that you are working on a Pascal program do Set Lang Pascal. If Pascal is your primary language, putting this Set option in Qeditmgr. Pub.Robelle (your Qedit configuration file) makes Pascal the default choice. You compile your Qedit workfile directly with either a Classic compiler or a native-mode compiler. For NM compilers, you must first stream Qcompxl.Qeditjob to adjust the command files (see Step 5 in the installation chapter). For CM compilers, you must first stream Qeditj1 or Qeditj1a to adjust the compiler program files (see Step 6 in the installation chapter).

/text pas.source

/set lang pascal

/pascal *               {standard MPE compiler}

/pasxl *                {native-mode compiler}

The :EDERR UDC compiles your Pascal source file, finds the errors, and displays the source and error messages on the screen for correction. See Editerr above for details:

/ederr pasxl,*

/ederr pascal,src

Other Qedit options of interest:

/list "cust"(smart)      {ignore "cust_rec"}

/text file,pascal        {make external file pascal}

/aj 55                   {justified = indented}

The MPE V HP Pascal compiler can abort with a stack overflow when compiling large programs. To avoid this abort, insert the $bigcompile$ option at the start of your Pascal source file.

C is a standardized programming language that is available on MPE V and MPE/iX. If you are using Jumbo or Wide-Jumbo files, you can use Set Lang CC or Set Lang CPP. If you are not using Jumbo or Wide-Jumbo files, we suggest Set Lang Job for C files in Qedit because Job files are kept without line numbers.

For C/iX, the :EDERR UDC can compile your program, find the errors and display each on the screen with the cursor on the offending line, ready for correction. See Editerr above.

/ederr ccxl *

For MPE V, there is one compiler available: CCS C. The CCS compiler can be converted to read Qedit files; see the chapter on installation at the end of this manual.

SPL

SPL is the Systems Programming Language for the Classic 3000. SPL is Qedit's default language, so you don't need a configuration command in Qeditmgr to set it.

/spl *                   {compile SPL workfile}

/set lang spl            {identify code as SPL}

/list "cust"(smart)      {ignore cust'rec}

/aj 55                   {justified = indented}

There is also a native-mode SPL compiler for MPE/iX, Splash from Allegro. The Splash compiler reads Qedit workfiles without a Keep and can generate an "error file" that is compatible with the :Editerror command. You can edit a Splash program within Qedit, use the Splash UDC to compile it, and automatically have Qedit position you to the proper spots in each source file where you have compile errors.

The UDC file is named Splashu.Pub.Splash and contains two UDCs of interest, :SPLASH, and :SPLLK. In each of them, you will want to add a :File equation such as FILE SPLERRS = SPLERRS to generate the error file. This causes the Splash compiler to emit a permanent disc file named SPLERRS.

Then add the following command after the :Run of the compiler:

editerror splerrs visual

This command will find the first error, if any, and print the error message and the line. If you then return to Visual, Qedit will be at the proper spot, with the compiler error message at the top of the screen. You use the F4 key to find the next error, F3 to go back to the previous error, or F8 when you are done fixing errors.

If you have many programmers that use the same logon group, you will be stepping on each other's Splerrs files. Modify the :File equation and the :Editerror command to specify a unique file name for each programmer. This is not difficult on MPE/iX. For example, use HP variables that store the User Name or the Session Name as part of the unique file name.

TRANSACT is a 4GL from Hewlett-Packard that runs on MPE V and MPE/iX. When you install Qedit, the CM Trancomp program is converted to read Qedit files. You will find it either as Trancomp.Q.Robelle, where it should be Run with Lib=G, or as Trancomp.Pub.Sys. The TRANSACT/iX Compiler reads a Qedit file as the main source file, but should be run with XL="qcompxl.pub.robelle" for Include files.

RPG

RPG files are like JOB files, in that they have 80-byte records and are "kept" unnumbered. If you create an RPG program in a JOB file by mistake, you can convert the file to RPG with Set Lang RPG. Because RPG is column-oriented, SMART string matching is ignored. The RPG compilers print the RPG source listing with sequence numbers (1, 2, 3...); therefore, if you do a Renumber before a compile, you can edit directly from the compiler listing. Full-screen editing in Visual mode is especially handy for the columnar format of RPG code.

Users of RPG/iX can use the Qcompxl.Qeditjob job stream to convert command files for RPG. This should allow you to compile a Qedit or Keep file at any point, either within Qedit or at the MPE/iX prompt, just by invoking the normal command file, rpgxllk or rpgxlgo.

Even though the Basic Interpreter has an "editor" built into it, we regularly get requests for the ability to edit Basic programs in Qedit. You can do such editing and XEQ the Qedit file within the Basic Interpreter, but your system manager must change the Basic interpreter for this to work. See the sections on installing the compiler interface in the chapter on installation for details.

A side benefit of changing the Basic interpreter to read Qedit files is that Xeq files can then have $include statements in them, allowing you to define subroutines and common blocks in separate X-5 files. However, you must remember that the Qedit line numbers are not the statement numbers of the Basic program. Each Basic statement in your Qedit file must still have a valid sequence number at the start of it.

You can invoke the Segmenter from within Qedit using the :Segmenter command, but then you must type your segmenter commands directly and wait for them to complete. You can :Stream a job that invokes the Segmenter, but that does not execute on your terminal where you can see it. Or, you can Run Segdvr.Pub.Sys with a Stdin file that contains your Segmenter commands.

/list segprg23

    1    usl $oldpass

    2    auxusl splusl.source

    3    copy segment,qhelp

    3    copy segment,dateformat

    4    exit

/:run segdvr.pub.sys;stdin=segprg23

You can use Prep and you can specify default values for RL and Maxdata (Set RL and Set Maxdata) or use QMAP to make the PMAP readable.


Common Uses of Qedit

Qedit is much more than just a programmer's editor. For your day-to-day tasks, you can use Qedit as a word processor, a file utility, and an operations tool.

There are several ways to use Qedit for word processing.

QNote UDC for Occasional Memos

Some users would like to use Qedit's full-screen editing to write an occasional memo, but feel intimidated by the range of features and options in Qedit. You can make Qedit more accessible by providing a special UDC and usefile. You can use our QNote UDC (from the file UDC.Catalog.Robelle).

 :QNOTE [filename]

To invoke Qedit to create a new memo, use :QNOTE without any parameters. Qedit puts the user straight into Visual mode, with configuration options suitable for processing a memo. For example, the option Set Vis Update is ON, meaning that pressing any function key updates the screen. The user is not faced with an "Okay to clear?" message, because Qedit purges any existing Qeditscr file. When the user presses F8 to exit Visual, Qedit updates the screen, Keep the new document as the file Memo in the logon group, and ask the user to verify Exit. You should teach users the MPE :RENAME command so that they can rename the file Memo, if they want.

To invoke Qedit to modify an existing memo, use :QNOTE filename (where filename is a Keep file or Qedit file). When the user presses F8, Qedit asks permission to Keep the file back into filename. The users should answer Yes to save their work or No to discard it.

Justify Capability

Suppose you want to write a letter to your mother. You know how to build a new file for it, or open an old one. You can create the rough letter using Visual or Add, Modify, and Delete. But what if you want the letter to be extremely tidy? Mothers like that sort of thing. Qedit has commands to help you produce a neat and tidy letter or memo:

/justify both 5       {even margins for paragraph}

/justify center 10    {center line 10}

/set just margin 65   {right margin at column 65}

/justify right 200    {right-justify line 200}

 

/set wrap on          {wraparound for long lines in Add}

/change 1/3 ""        {shift left 3 columns}

/change 1 "   "       {shift right 3 columns}

 

/set mod qzmod        {visual line edit; try Control-Q}

/visual *             {full-screen edit}

 

/l $lp all            {list on file LP, with line numbers}

/lq $lp all           {LP listing without line numbers}

/set list page on     {LP lists have page heads}

/add 50.1

    50.1   $page      {causes page eject in LP list}

    50.2   //

/add .1               {replace default date/time}

     0.1   $title "Letter to Mom"

     0.2   //

/set list name off    {remove file name from LP list}

/list $double $lp @   {double space LP list}

By combining these commands in various ways and using $page commands in your text to define page breaks and running titles, you can produce a very nice LP listing.

Check Spelling

Qedit has built-in commands to use Spell's dictionaries to perform integrated spell-checking. The Spell command spell-checks a line range, while the Words command spell-checks or searches for words.

/spell                {check current line}

/spell @              {check current file}

/spell 10/20          {check lines 10 through 20}

/spell "xyz"          {check lines containing "xyz"}

 

/spellj 10/20         {check lines 10 through 20 and}

                      {modify lines with misspellings}

 

/words "rigth"         {check the word "rigth"}

not found : rigth

 

/words "quicks@"       {find words prefixed with "quicks"}

word          : quicks

prefix        : quicksand

              : quicksands

              : quicksilver

              : quickstep

4 matches

 

/words "vegetable!"   {find sound-alikes for "vegetable"}

word          : vegetable

soundex       : vegetable

              : vestibule

              : visitable

3 matches

If your UDC or command file for running the spell checker program is also called "Spell", you must change its name. You must use :Spell to access the UDC.

/:spell file         {we suggest "spellf" instead}

Prose: A Text Processor

When you license Qedit we give you a text formatter named Prose. Prose is in our Qlib; it works well for user manuals and program documentation.

We use Prose for everything and find it flexible and reliable. It reads a Qedit or Editor file of text and commands, and produces a final document on a screen, line printer, LaserJet, or a disc file.

Prose can justify, underline, hyphenate, number pages and paragraphs, format the page the way you want, produce an index, and produce a table of contents. If you have a LaserJet, you can use the font cartridges and proportional spacing, as well as draw boxes and lines. Prose can not do footnotes, or generate two-column output.

Prose User Manual

To print the Prose User Manual, using Prose, enter these commands:

/set udc udc.catalog.robelle

/file print;dev=lp,,copies

/prose prose.qlibdoc.robelle,*print

The UDC file contains two User Defined Commands for Prose. :PROSE formats a specified "input" document to a specified "output" file (usually a printer, but defaults to $stdlist), while :PDISC takes only an input file and formats it into a temporary disc file named PLIST.

You can also use the Printdoc program to print the Prose user manual or any other Robelle user manual. Run Printdoc.Pub.Robelle, and Printdoc displays a menu of user manuals for you to choose from. You then answer a few questions about your printer.

Templates for Prose

There are two template files, MANUALS and LETTERS, in the Qlibdata.Robelle group. These files are designed to get you past the hurdle of deciding what Prose options to use; they decide for you! Both template files are explained in the Prose User Manual.

Fixing Hyphenation Errors

When you finish a Prose document, you usually need to make a couple of formatting passes over it to resolve hyphenation problems. Use the :PDISC UDC to writes all errors (including hyphenation errors) into a separate file named PERRFILE. Then use Qedit to find and fix words that need hyphens:

/set udc udc.catalog.robelle

/open howmessy.doc

/:pdisc *    {format HowMessy Manual into PLIST}

Justify Command and Prose Documents

While editing Prose files, you will want to use the Justify Format command to make the raw text more tidy and easy to read. This command adjusts text so that the words fill the margins as much as possible, adjusting lines that are too short or too long. You can configure Justify with Set Justify to start and stop justification when it encounters certain characters in column one. This avoids having your format commands and text all run into one long paragraph.

/set justify stop ".+" start "` "

Using TDP from within Qedit

Many users have TDP/3000 and Qedit, because TDP is one of the few programs on the HP e3000 to use the full capabilities of the 2680 Laser printers. Using the :Tdpdraft and :Tdpfinal commands that are built into Qedit, you can use Qedit for complete editing of your document, then print it via TDP.

Qedit has numerous applications in handling of ASCII data, not just straight text.

Sorting a Range of Lines

Qedit has a command, Lsort, for sorting a range of lines.

/lsort all

/lsort 1/10

/lsortq 1/10

/lsort all key 1 10 desc

/lsort 40/last key 1 10 20 5

By default, the command uses the entire line as the sort key, sorts in ascending order, and prints the sorted lines. Use the KEY option to specify up to four explicit sort keys, use the DESC keyword to sort in descending order, and use LsortQ to sort without printing.

Searching Groups of Files for Strings

You can use Qedit to search a group of files for a string; we show two very different methods below. Note that either method can be replaced by a single MPEX command, %QEDIT @,List "string".

FINDIT Job

The first technique is to do a :Listf into a disc file and then have Qedit convert that disc file into a usefile of commands to be finally executed by Qedit. There are three lines to be modified in this job. On each of these lines the key fields have been underlined and a comment has been placed in curly braces.

!job FINDIT,username.account,group {Insert USERID}

!comment *************************************************

!comment *                                               *

!comment * FINDIT will produce a list of occurrences of  *

!comment * a given string in a given set of files in a   *

!comment * single file group (logon group).              *

!comment *                                               *

!comment *************************************************

!comment

!comment To use FINDIT, follow these instructions:

!comment   1.  Text a copy of this sample (/Text FINDIT).

!comment   2.  Change the JOB command to log on to the

!comment       group that you wish to search.

!comment   3.  Change the fileset in the LISTF command if

!comment       you don't want to search the entire group.

!comment   4.  Enter the string to search for between the

!comment       quote characters in the first Change command.

!comment       Change these quotes to colons if your string

!comment       contains any quotes.

!comment   5.  Stream your workfile (:Stream *).

!comment

!file f=findit;temp;rec=-12,170,f,ascii;nocctl

!listf @;*f                          {Insert FILESET}

!run qedit.pub.robelle

set autocont on

text findit

set length 80

dq "        " (1/8)

dq "FILENAME" (1/8)

cq 10 #"_______"# all                {Insert SEARCH STRING}

cq 1 "L " all

shut

use *

exit

!eoj

FINDIT Command File

The second technique is not so different from the first. A :Listf command is used to generate the list of files, but instead of being a job stream, it is a command file which can be executed from your terminal. It takes two parameters: the fileset to be be searched, and the string for which to look. This command file uses MPE/iX syntax, the listf mode (6), and uses I/O Redirection (> ftemp).

parm      fileset=@

anyparm   string

purge ftemp,temp

listf !fileset,6 > ftemp

/set autocont on

/text ftemp

/set length 80

/changeq 1 "$include " all

/list $include "!string"

Editing Data Files

Any external file that Qedit cannot classify as a programming language such as COBOL is tagged either as a JOB file (80-byte records, unnumbered), or a Text file (any record up to 8,172 bytes, numbered or not, ASCII or Binary, CCTL or not, etc.). See the Set Keep and Set Length commands. When working with record lengths of greater than 80 columns, you may find it easier if you set margins with Set Left and Set Right.

Warning: If you Text and Keep a file with a record length greater than 8,172 bytes, Qedit truncates the file to 8,172 bytes per record.

Copying and Shifting Columns

To copy columns of data, use Hold plus Set Left and Set Right to save the column in the Hold file. Then change the margins and use Replace $hold to copy the lines from the Hold file into another column. See the Replace command for an example.

To shift columns right, use Change col " " to insert spaces in front of a column. To shift columns left, use Change col/col "" to remove columns. To erase a column, use Set Left x, Set Right y, and Change x/y "".

Weird Line Numbers or Losing Eight Characters

Sometimes you try to List or Text a data file, and Qedit appears to lose the last eight characters of your record, or show you line numbers that seem crazy. The reason may be that the data file contains digits in the last eight columns of the record, so Qedit assumes that these digits are the record line numbers. The solution is to remember to List or Text these files using the UNN option. For example, the file is a list of the following ten-digit part numbers:

0004001007

0004001010

0004002059

 

/list thefile

 4001.007 00  {The file is interpreted as a}

 4001.01  00  {two-character file with}

 4002.059 00  {eight-digit line numbers.}

 

/list thefile,unn

    1     0004001007

    2     0004001010

    3     0004002059

CCTL Files

When you are working with CCTL disc files, remember that List prints the first column, the one with the carriage control, as data, while ListQ sends it to MPE to control spacing of the listing.

If you change your terminal width and want that new width to be used in the List command (especially LISTQ of CCTL files), you must do a Set Vis Stop command to force Qedit to re-query the terminal for its width.

When you do a List-Quiet of a CCTL file, the goal of Qedit is to reproduce as closely as possible the result of originally directing the output to a printer instead of a disk file. The first character in each line directs whether that line is single-space printed, overprinted, or page-ejected.

The listing is written to a file, either QEDLIST or LP ($LP). The record width of that file is very important. For LP, the record width comes from the device specification of a :FILE command with a REC= parameter.

QEDLIST is a file that is opened in Qedit for the $STDLIST device. The default record width is 80 characters. However, if you are logged on interactively, Qedit knows that your "CRT" or Reflection may have more than 80 columns of display. Therefore, it checks your terminal at startup and uses the CRT width at that time as the record size for QEDLIST.

When you List a file with lines longer than the QEDLIST record size, Qedit normally folds those lines for you. However, on a ListQ of a CCTL file, Qedit does not do any folding. It leaves the treatment of the lines completely to the MPE file system. MPE itself breaks up the lines in its own way if necessary, which seldom looks the way you want for CCTL files. Therefore, if you have widened the CRT width, you must let Qedit know about that change. You can do this with Set Vis Stop, which forces Qedit to re-iniitalize all knowledge of the CRT on the next command. This also closes and re-opens a new QEDLIST file with the new terminal width.

You can confirm the current CRT width by doing Verify Visual - if the CRT is open, it will appear in a comment like this:

{Reflection=500W Col=80}

Or you can do a SHOWJCW RCRTWIDTH. Set Vis Stop will reset both values to 0 or null.

If you do List-Template, then you obviously do not want an exact reproduction of the original report, since it did not have a template. Therefore, Template disables the special Quiet treatment of CCTL files. Similarly, a non-quiet list also cannot look like the original report, so the special processing is not done in that case either.

File Size

When you Text a data file into a Qedit workfile, Qedit remembers whether the original file had space available beyond the end-of-file. If it did, when you Keep the data file again, Qedit adjusts the limit of the new file to ensure that the same free space still exists.

Texting a File with User Labels

When you edit a file with user labels (e.g., a PowerHouse subfile), use Text file,Labels to retain the contents of those labels in the workfile. When you do a Keep, Qedit writes the labels to the new file. There is no way to edit the labels, but you can remove them by doing Keep file,Nolabels. To retain the user labels by default, use Set Work Labels On. Many PowerHouse sites put this command in their Qeditmgr file, since they edit PowerHouse subfiles in Qedit.

Editing Program Files

For years people have been editing binary program files with Qedit, but we have never said whether this should work. Now Qedit recognizes that you are editing a program file. The Text command prints a warning that you should only use the Change, List, and Keep commands on program files. Change does not let you replace a string with one of a different length, as this would invalidate the program file. Keep forces the new program file to have exactly one extent.

Qedit is handy for managing :Stream files and spool files and coping with operational problems in general. For example, you can leave Qedit running on the console with SPOOK and Suprtool as "suspended" son processes for dealing with spool files and data files. While editing and launching job streams, the operator can use List filename to examine other files and dump them to the printer.

Editing Stream Files

The Qeditscr file is just what you need for editing and launching batch jobs. You Text a copy of the template stream into Qeditscr, fix it, then :Stream it - all within Qedit.

/text compjob.streams

QEDITSCR

33 lines in file

/modify "XXXX"        {modify parameter lines}

/stream *             {stream modified job}

When creating job streams, use Set Lang JOB and consider saving job streams as Keep files. Qedit files can only be streamed from within Qedit, or by STREAMX from VESOFT.

Native-Mode Output Spool Files

Since native-mode output spool files are ordinary files, they can be Listed, Texted, and Destroyed with Qedit. To make this easier, Qedit recognizes the format #O1234 and #1234 as spool files and translates them into the proper MPE/iX file name. You cannot Keep as a spool file, but you can do List LP to create a new spool file.

/showout sp;ready

/list #o12

/text #321

/destroy #O5678

Editing Bells, Tabs and Escapes

When using Visual mode to edit files containing Bell, Tab, Esc, many lines are shown with a ?. This indicates that the line contains unprintable characters and cannot be edited in Visual. Lines containing ShiftOut and Shiftin characters might be modified because of the interaction with the terminal or terminal emulator. However, you may specify substitute characters for use in Visual. The trick is to choose a character that is not used for anything else (say ¤, which is typed as Extend-char-G, or Alt-Z G using Reflection for DOS).

/set vis bell "ß"        {Alt-Z S in Reflection}

/set decimal on; set vis bell '222 {for Qeditmgr file}

/set vis tab "¤"         {Alt-Z G in Reflection}

/set vis esc "¥"         {Alt-Z H in Reflection}

/set vis so "é"

/set vis si "ç"

/set decimal on; set vis esc '186  {for Qeditmgr file}

Aborting All Users to Back Up

One of the features of MPE is the ability to do automatic backups to a DAT tape in the middle of the night without an operator. For this to work, you need to configure your tape drive for "automatic reply", insert a tape before you leave, and :Stream backup; AT=23:00 (i.e., 11 p.m.). This works fine, unless someone forgets to log off. The files they have open will not be on the backup tape. Qedit can abort these users when it is time for backup, by doing a :Showjob into a disc file and reformatting it into a list of :Abortjob commands.

!file abort,new;dev=disc;rec=-80,16,f,ascii;nocctl;temp

!setjcw cierror := 0

!continue

!showjob job=@s;*abort

!if cierror=0 then

!   file abort,oldtemp

!   run qedit.pub.robelle

text abort

dq "#S" (1/2 nomatch)

:comment To allow Operator.Sys to remain logged on:

dq "OPERATOR.SYS"

cq 9/80 "" all

cq 1 ":abortjob " all

shut

use Qeditscr

exit

!endif

!purge abort,temp

!reset abort

For this job to work, the job stream must be "allowed" to do :Abortjob. You can either ALLOW the command to everyone (@.@), or use VESOFT's GOD program to ALLOW this job the :Abortjob command.


Qedit Commands

Qedit operates in Line mode or Visual mode, depending upon the type of terminal. The same commands are used in both modes. In Line mode, you do everything with commands. In Visual mode, you do most editing with built-in functions of your terminal, but use commands for some things. Line mode commands work in Visual mode, and Visual mode function keys work in Line mode.

Here we describe the Qedit commands in alphabetic order. For each command, we show both the longest and the shortest name that Qedit can recognize, as in Add [A]. Highlighted terms (e.g., linenum) and jargon words (e.g., "workfile") are defined in the "Glossary[Help17] ". The Visual command[Help18]  is described only briefly in this section: see the chapter "Getting A Quick Start with Full-Screen Editing" for full details.

Here are general guidelines that apply to using the Qedit commands.

Abbreviations

Each Qedit command has a name such as List that you can abbreviate to any leading subset. Thus, L means List. Some commands require more than one letter: GARbage, DEStroy, RENumber, SHut, VIsual. You may append option letters to the command: Q, T, or J. Q means "quiet", T means "template", and J means various things, depending on the command.

list all     {fully spelled out}

l @          {maximal abbreviation}

lq           {list quietly}

listqt       {list quietly, with template}

lqjt         {list quiet, jumping, with template}

list $       {most recent external file name}

 

s dec on     {Set Decimal command}

sh           {Shut command}

Uppercase or Lowercase

You can enter the commands in uppercase or lowercase. These commands are identical:

LIST ALL    {uppercase}

list all    {lowercase}

Multiple Commands per Line

You can enter several commands on a single line, if you separate them with semicolons. The maximum command line is 256 characters, and & is not supported for continuation. If you want to have an MPE command or a calculator command in the stack, you should enclose it in parentheses. This prevents Qedit from passing the rest of the line as parameters. For example,

List 5;Listspf o ;seleq=[owner=mgr.acct];List 4       {fails}

List 5;(Listspf o ;seleq=[owner=mgr.acct]);List 4     {works}

If the syntax requires semicolons and parentheses, you have to put the problematic command in a command file, a UDC, or set it in a MPE variable and use it in the command list instead.

Any error causes Qedit to flush the remaining commands in the line.

list 505;add *-1   {list line 505; add just before it}

shut;stream job23

When combining Qedit commands, be certain to use the same quote character in all the commands.

Wrong:

/c7/7"DISPLAY";c\.\\

Right:

/c7/7"DISPLAY";c".""

Comments on Command Lines

You may annotate Qedit commands by putting comment text in curly braces at the end of the line:

keep sample,yes    {update disc file}

Such comments are recognized at the "/" prompt, in usefiles, command files, and UDCs (of course, MPE won't like them!), as well as Visual's home line and Next? prompt and List's More? prompt. In command files and UDCs the {comment} may appear on continuation lines, before or after the "&".

STREAMX Warning

STREAMX is a product from VESOFT that permits you to build flexible job streams. STREAMX contains a complete programming language with loops, prompts, and parameter substitution. A problem arises when trying to enter comments into a Qedit batch job that will be submitted with STREAMX. Qedit uses the {...} pair to delimit comments. STREAMX uses these same characters for expressions.

You cannot change Qedit's comment character, but you can change the {...} characters in STREAMX. The following example changes the STREAMX expression characters from {...} to ~...~:

!job helpfile,user.acct

::setbraces ~~

!comment  Purpose: This job stream uses the QLIB tools

!comment            Prose and Qhelp to create

!comment            a helpfile from a user manual.

!comment

!purge ~product~.help.acct

!setjcw outhelpcomp=1

!run helpcomp.qlib.robelle;parm=3

~product~.doc.acct

yes

~product~.help.acct

!release ~product~.help.acct

!run qedit.pub.robelle

open ~product~.help.acct

list .beginkey (U)    {optimizing pointers for speed}

exit

!tell ~hpjobname~,~hpuser~.~hpaccount~;Help created!

!set stdlist=delete

!eoj

Stopping Commands with Control-Y

You can stop most Line mode functions by pressing the Control-Y key. For example, to stop an inadvertent List ALL, use Control-Y. To stop the Add, Modify, or Replace commands, use either Control-Y or two slashes (//).

Implicit Commands

Some commands have no alphabetic name. In Line mode, pressing only Return means display the next line and a backslash (\) means display the previous line, $ means enable Memory Lock and $- means disable Memory Lock. In either mode, ? means Help, any line number means go to that line, a string means display the next line with that string, and "^" means search backwards for a string:

 

55

find and display line 55 or higher

FIRST

find and display first line

;;;;

display the next 5 lines

\

display the previous line

-5

move current line back 5 lines

"string"

display next line with string

^"string"

display previous line with string

$

turn on memory lock at this line

$-

turn off memory lock

 

Function Keys

Qedit accepts the eight user function keys of HP terminals as one-keystroke abbreviations for useful functions:

 

F1

Go into Visual; Update/Getnext if in Visual

F2

Roll the screen up 6 lines; browse

F3

Findup (find previous line with current string)

F4

Find (find next line with current string)

F5

Browse Backward One Page

F6

Browse Forward One Page

F7

Listredo (line) or execute ===> line (Visual)

F8

Exit from Qedit or Exit from Visual to Line mode

 

^1 through ^8 are another way of invoking the user function keys in Line mode.

Command Files and UDCs

Qedit executes MPE commands, UDCs (see Set UDC), and command files, whether they start with a colon (":") or not. Your UDCs must first be activated in Qedit using the Set UDC command.

MPE Commands

Qedit accepts most MPE commands, including Run commands, User Defined Commands, command files, and Implied Runs, with or without the colon. You only need the ":" if the MPE command is also a valid Qedit command (e.g., :help requests MPE help). Beware of some unobvious Qedit commands composed of abbreviations and options. For example, PRT is interpreted as a Qedit command (Proc with the template option) so you must put a colon in front of it to have Qedit execute it as a User Command. Any MPE command causes Qedit to post to the disc all changes to your current workfile.

Examples

/listf abc.source,2

/list abc.source 5/10;listf abc.source,1

/fcopy from=abc.source;to=

/:showtime

/showjob

/file bobtape;dev=tape

/stream abc12.compile    {stream Qedit files, *}

/showcatalog             {see Set UDC command}

/:help listf             {colon is recommended}

/:help udcname            {see set UDC}

/compile *               {Set Lang decides compiler}

/cobol abc.source,,lp

/prep $oldpass,abc12.prog;pmap

/run abc12.prog;lib=g

/dbutil                  {implied Run dbutil.pub.sys}

/segmenter

/display Print this message on the screen.

/pause Press Return when ready to continue:

/tdpdraft *              {invoke Scribe on Qedit file}

/reflect dir             {Reflection PC command}

/qhelp qlib.help.robelle {get Robelle Help}

Differences from MPE

The Break key will not stop Qedit in the middle of a long :Listf or other command. You may want to use :Break and :Resume to do a long :Listf. Control-Y sometimes stops a :Listf on certain versions of MPE/iX, but generally Control-Y doesn't stop most commands. Control-Y does stop a compile if the compiler has been "fixed" to use our interface routines to read Qedit source files. The Qedit syntax for Prep and Run is more forgiving than in MPE; you can abbreviate the keywords, leave out the commas, and use default parameter values. Qedit adds a number of new commands that MPE forgot -- Reflect, Display, Pause, Activate, Kill.

Unlike Qedit commands, MPE commands cannot normally be shortened, and only one may be entered per command line. You will find MPE commands handy to check files (listf), to check users (showjob), to redirect files (file lp = $stdlist), to compile without leaving Qedit, to :Prep (or :Link on MPE/iX), and to :Run programs:

/listf

/file lp;dev=serialp

/cobol *,,lp

/prep                     {$oldpass to $newpass by default}

/run                      {defaults to $oldpass}

Calculator Commands

Any command that begins with an equal sign (=) is treated as a calculator expression. This feature can be used to compute temporary values and do conversions from one number base to another.

=64,O

Result= %000100

QEDITCOUNT JCW

Qedit has a JCW (like a variable) that keeps track of how many lines were processed by the last command: QEDITCOUNT. This JCW is updated after those commands that can print a total: List, Delete, Add-file, Add-move, Add-copy, Append, Change, Divide, Glue, Justify, Keep, Merge, Proc, and Text. The line count is truncated at 32,000.

/deleteq "$page"

29 lines DELETED!

/showjcw qeditcount

QEDITCOUNT = 29

QEDCURWFILE Variable

Qedit updates a variable, QEDCURWFILE, with the name of your current or last workfile. The name in this variable is the same as the name substituted when you use "*" as a parameter in a User Command. This gives you the ability to reference the current workfile easily from within a User Command without having to pass it in as a parameter.

External Program Commands

If you define an external program such as MPEX with the Set Extprog command, you can then send it commands by prefixing them with a percent sign (%). When the external command completes, you return to Qedit.

/set extprog main.pub.vesoft

/%!altfile @.@;squeeze;extents=1


Awakens one of the programs that you have held in Qedit. See also Kill.

 :ACTIVATE [ progname [,entrypoint] ]

(Defaults: most recently used)

The progname must be the name of a program file that you ran within Qedit, that suspended on exit, and that you held. The default is the program most-recently used. You need not spell out the entire program file; you may shorten the name to any substring. Use Verify Run to see what programs are ready to be activated.

Examples

/run suprtool.pub.robelle

>base xx;get yy;list;xeq  {do Suprtool task}

>exit                     {return to Qedit}

End Run

SUPRTOOL is still alive.  Okay to HOLD onto it [no]?yes

/list all...              {continue editing}

/ac supr                  {activate Suprtool}

SUPRTOOL.PUB.ROBELLE

>get zz;list;xeq

>exit

Program Held.  Use :Activate/:Run to rerun.


Adds lines into the workfile. There are five varieties of Add that cover all the ways you can add lines into a Qedit workfile:

 

NEW

Add new lines to your workfile from Stdin.

STRING

Add a new line from the command prompt.

COPY

Copy lines from one place to another.

MOVE

Move lines from one place to another.

FILE

Bring lines in from an external file.

 

Add (Adding New Lines)

Add some new lines from the terminal keyboard. Insert them at a given line number or after it.

ADD [ linenum ]

(Q=no linenums, J=justified, T=template)

(Default: linenum = *)

The linenum parameter specifies where to add new lines and also determines the increment between new lines. If linenum is 9.1, lines will be incremented by 0.1; if 9.01, then 0.01. If linenum already exists, Qedit increments it and begins adding after the existing line. If linenum is 0, Qedit adds new lines before the first existing line in the file. If you don't say which linenum, Add inserts the lines after the current position (*). (See Miscellaneous Points below.)

Examples

/add 5             {add new lines after line 5}

    5.1   line a   {Qedit prompts with line number}

    5.2   line b   {you enter line of text and Return}

    5.3   //       {you enter // or Control-Y to stop}

 

/aq                {add after * line; no prompt}

This is new text

//                 {end the Add command}

Temporary Workfile: Qeditscr

If you do not have a named workfile Open when you Add, Qedit automatically builds a temporary workfile for you. This file is named Qeditscr (or Qednnnnn if you have Set Work Random On), and it is job temporary, meaning it goes away when you log off the computer. Therefore, you should convert it into a permanent Qedit workfile by doing Shut filename or into a permanent Editor-style file by doing Keep filename.

Making Qeditscr Permanent

Do you access Qedit over a telephone line? Have you ever been disconnected by noise on the line? If so, you probably know that Qeditscr is a job temporary file. When your session is lost, so is your editing work. Of course, if you were editing a named Qedit file that you Opened, you would not lose anything.

Qeditscr can easily be converted into a permanent file so that it will not be lost on :BYE. However, if two people share the same logon group, the Qeditscr file cannot be permanent for both of them! Here are the commands to create a permanent scratch file for yourself:

/:purge qeditscr,temp  {purge existing file}

/set work size 3200    {ensure file is big enough}

/open                  {creates new Qeditscr}

/shut

/:save qeditscr        {make permanent}

Another way of using permanent scratch files is to pass a file name for Qedit to edit, or to use Set Work Random On. See the "Running Qedit Under MPE" chapter for more information.

Using the Tab Key

By default, Qedit defines tabs every 10 columns across the line (every 8 for Qedit/UX). You can override these default tab stops using Set Tabs Stop n (every 2 to 15 characters) or Set Tabs 5 10 22 28 ... for completely custom tab stops. When you press the tab key as you Add lines, Qedit correctly inserts spaces in your lines and skip to the correct column on your screen (assuming you are using an HP terminal).

Overflowing Lines or Line Numbers

The Add command continues prompting until you press Control-Y, or you type "//" at the end of a line, or you run out of line numbers. When you exhaust the line numbers possible between two lines, Qedit prints "Error: Already". You can continue by doing a range Renumber on the area where you wish to add more lines. Thus, if your last line added was 4.999, use Renum 4/5 to spread out the lines between 4 and 5.

You can configure Qedit to automatically renumber part of the file so that you do not have to renumber it manually. See the Set Visual Renum option.

Line Wraparound

If you enter a line that is too long, Qedit divides it into several lines. Set Wraparound ON divides lines on "word" boundaries only. Any words that will not fit on the current line are moved to the next line. If only a small number of words are moved to the next line, Qedit prompts you to complete the line. To end the Add when this happens, press Return before typing "//". If you are editing FORTRAN source code, Qedit generates a valid continuation line for you.

Automatically Indenting Lines

AJ for justified is a special option to indent new lines. The linenum you specify must be an existing line. You enter new lines beneath it. Qedit will then indent the new lines by exactly the same number of spaces as the existing line. You can shift the indentation left by typing {'s at the start of a line, or shift it right with }'s. To redefine the { and } characters, use Set Zip.

Modifying a Line During Add

When you know you made a typo, and prefer to fix it now instead of going on, the auto-modify character will help you. Enter the command Set Zip []@{}#, or better yet, put it in your Qeditmgr configuration file. The # character (or other special character of your choice) is called the auto-modify character. It allows you to modify the line you are currently entering. Type "#" at the end of the line, and Qedit redisplays the line for you to modify. When you are done with the Modify, you press Return to continue adding new lines.

Miscellaneous Points to Note

If you have Set Left/Right margins, the new lines added will have spaces to the left and right of the margins. That is, the line you enter will be left-justified within the current margins of the workfile.

The maximum default increment between new lines is 1.0 (or 0.1 for standard COBOL files). You can change this default with Set Increment.

You can ask Qedit to remove nonprinting characters from your input lines using Set Editinput Data ON. If you do not wish to allow the extended Roman-8 characters, use Set Editinput Data ON Extend OFF.

Add (Adding a String as a Line)

Add one new line, with the text coming from a string in the command itself. This is handy when you need some literal text within a User Command or Use file, but don't want to create a temporary file to hold it.

ADD linenum string

(Q=no linenums, J=justified, T=template)

(Default: linenum = *)

The linenum parameter specifies where to insert the new line containing the string.

Examples

/add 5 "new line"

   5.1    new line

/add 10.01 "change datasetdata setall"

  10.01   change datasetdata setall

Add (Copying Lines within a File)

Add lines by copying duplicates of existing lines.

ADD linenum = rangelist

(Q=no display)

(Defaults: none)

The linenum parameter tells Qedit where to insert the copied lines. The number of decimal places in linenum tells Qedit how finely to number the new lines:

/add 50 = 1/9           {new lines will be 50.1, 50.2, 50.3...}

/add 50.10=1/9          {new lines will be 50.10, 50.11, 50.12...}

The rangelist parameter tells Qedit which lines to copy:

/add 50.1 = 1/9 10/15 {'1/9 10/15' is the rangelist}

Examples

/list 4/8               {how lines look before the copy command}

    4     aaaaaaaa

    5     bbbbbbbb

    6     cccccccc

    7     dddddddd

    8     eeeeeeee

/add 5 = 7/8            {copy lines 7 and 8 after line 5}

    5.1   dddddddd

    5.2   eeeeeeee

2 lines COPIED

/list 4/8               {how lines look after the copy command}

    4     aaaaaaaa

    5     bbbbbbbb

    5.1   dddddddd

    5.2   eeeeeeee

    6     cccccccc

    7     dddddddd

    8     eeeeeeee

 

/aq 5 = 5               {duplicate line 5 after itself}

Notes

Add prints each new line, unless you use AQ. When you copy lines, the rangelist must not include the linenum (e.g., /Add 5 = 4/6 is rejected because it would be an infinite loop). Qedit prints "Error: Already". The lines copied are not deleted from the original location. You now have two copies of the lines (and a copy in the Hold0 file, see Add-Move). Add-Copy is like the Copy command of EDIT/3000.

If you have Set Left/Right margins, Qedit prints only the portion of each line within the margins. However, it will actually copy the entire line, including the portion outside of the current margins.

Add (Moving Lines within a File)

Move some lines from one place in the file to another, deleting them from the original position.

ADD linenum < rangelist

(Q=no display)

(Defaults: none)

The linenum tells Qedit where to move the lines. The number of decimal places in linenum determines the line number increment. For example, "/add 5.10<100/200" creates lines 5.10, 5.11, 5.12, etc.

The rangelist tells Qedit which lines to move. Add deletes the original lines after moving them. You still only have one copy of each line.

Examples

/list 4/7         {how lines look before the move}

    4     aaaaaaaa

    5     bbbbbbbb

    6     dddddddd

    7     cccccccc

 

/add 5 < 7        {move line 7 after line 5}

    5.1   cccccccc

1 line MOVED

 

/list 4/7         {how lines look after the move}

    4     aaaaaaaa

    5     bbbbbbbb

    5.1   cccccccc

    6     dddddddd

Notes

Control-Y during a move stops the move, but it also changes the move into a copy. The lines being moved in the current range are not deleted.

Add-Move ignores Set LEFT/RIGHT margins; it moves entire lines. However, it only prints the portion of the line within the current margins.

Add-Move is like the Gather command in EDIT/3000.

When you copy or move lines using Add= or Add<, Qedit first puts the lines into a "Hold" file called Hold0. It then counts the lines. If you do not have sufficient line numbers to insert the new lines, Qedit stops and prints "Error: Already". Use Renum to renumber the range of line numbers and then copy the lines from the Hold0 file. See also the Hold command.

/list hold0

/add 55=hold0     {add from Hold file}

Add (Copying Lines Between Files)

Add lines to the workfile from an external file.

ADD linenum = filename [,UNN] [ rangelist ]

(Q=no display)

(Default: entire file)

The linenum tells Qedit where to begin adding the lines from the external file.

The filename tells Qedit which file to copy from. It can be any type of disc file. If any of the lines are too long, they will be truncated with a warning. Use filename,UNN when you are adding from a data file with numeric characters in the last eight columns which are not really sequence numbers.

The rangelist tells Qedit how much of the file to copy. The default is to copy the entire file. If the external file does not have sequence numbers, Qedit assumes that the file is numbered from 1 by the current Set Increment. When you specify a rangelist, Add leaves a copy of the lines from the external file in the Hold0 file, as well as in your workfile.

Examples

/add 500.01 = abc       {copy in the file ABC after 500.01}

  500.001 abc line-1    {prints each line copied from file}

  500.002 abc line-2    {prints new line numbers too}

 

/aq 5 = xyz 5/10        {copy in lines 5/10 of the file XYZ}

 

/l template "$page"(up) {list page breaks in a file}

    1    $PAGE "xx"     {select the template you want}

   24    $PAGE "yy"

   37    $PAGE "zz"

/add 5=template 24/36   {copy the lines between $pages}

 

/shut longname.to.type  {establishing "previous" file}

/new cust               {open another file}

/a 1 = $ 50/60          {$ stands for longname.to.type}

Notes

Add prints each line as it copies it, unless you use AQ. If Qedit finds invalid sequence numbers in a file, it begins assigning "logical" sequence numbers using the last valid sequence number and the current Set Increment.

If you have Set Left/Right margins, Qedit inserts blanks before the left margin in each line. That is, the lines from the external file are left-justified within the current margins of the workfile.

Add from a file is like the Join command in EDIT/3000.


Appends a string to the end of each line in the rangelist.

APPEND "string" [ rangelist ]

(Q=no display)

(Default: rangelist = *)

Append allows you to add a semi-colon (or any other string of characters) to the end of a line (/AP ";" 5/10). Append prints each line that it changes. If the resulting line would be too long, Append goes into Modify on that line.

Examples

/list 25

   25    to the end of the line

/append "!"

   25    to the end of the line!

/ap ")" 1/4

    1       (redo function)

    2       (modify function)

    3       (append function)

    4       (list function)


Starts "browsing" the current file by displaying one page "backward". You stay in "browse" mode until you enter any command (see List, jumping option).

BACKWARD

(F5 key does the same)

In Line mode, Backward and Forward (or F5/F6) throw you into List-Jumping's browse-mode. Qedit displays a screen of text, where the screen size is either 23 lines or what you specify with Set List LJ, then waits for you by asking "More?". Press Return to see the next screen. Typing a line number moves you to the screen starting at that line, pressing F2-F6 does the appropriate action, and F8 or "//" or Control-Y or typing any command gets you out of browse-mode. At the "More" prompt, the * "current" line is the last line displayed.


Repeat any combination of the previous 1,000 command lines, with or without editing.

                BEFORE [ start [ / stop ] ]

                                                [ string ]

                                [ ALL | @ ]

(Default: redo previous line)

(BQ=redo without change)

(BJ=listredo)

The Before command allows you to modify the commands before it executes them. If you don't need to change them, use BQ or :Do. Commands are numbered sequentially, starting with 1 for the first command entered and, by default, the last 1,000 commands are accessible. This numbering sequence applies only to the temporary redo stack, because this stack is discarded when you exit Qedit. The numbering sequence in a persistent redo stack, which is accessible across Qedit invocations, continues between invocations. Use the :Listredo or BJ command to display the previous commands. You can redo a single command, a range of commands, or the most recent command whose name matches a string.

The Before command uses Qedit-style Control characters for modifying the commands. The default mode is to replace characters. To delete use Control-D, and to insert use Control-B. If you prefer HP-style modify (D, R, I, and U), use the :Redo command instead of Before, or do Set Modify HP.

Examples

/listf @.soruce               {"source" is not spelled right}

NON-EXISTENT GROUP.  (CIERR 908)

/Before                       {redo most recent command}

listf @.soruce                {last command is printed}

         our                  {you enter changes to it}

listf @.source                {the edited command is shown}

you press Return}

 

/listredo -10/                {show last 10 commands}

/before 5                     {redo 5th command in stack}

/bef 8/10                     {redo 8th through 10th}

/b listf                      {redo last Listf command}

/b listftemp                  {redo "listftemp" command}

/b @temp                      {redo last containing "temp"}

/before –2                    {redo command before previous}

/before -5/-2                 {redo by relative lines}

Notes

If you wish to change any characters within the line, the modify operators are the regular Control Codes used in Qedit:

Any printing characters replace the ones above.

Control-D plus spaces deletes columns above.

Control-B puts you into "insert before" mode.

Control-A starts appending characters at the end of line.

Control-A, Control-D, plus spaces, deletes from the end.

Control-T ends Insert Mode, allowing movement to a new column.

Control-G recovers the original line.

Control-O specifies "overwrite" mode (needed for spaces).

To save more commands, use a :File command on the file Qedredo before running Qedit:

:file qedredo;disc=5000

:run qedit.pub.robelle


Qedit allows you to build and fill MPE files in UDCs and usefiles:

:BEGINFILE filename

: data records

:ENDFILE

The :Beginfile command opens a new temporary file with 256-byte records. :File equations are allowed to override the format of the file. Qedit writes all of the data records between the :Beginfile and the :Endfile into this new file. Each data record must have a colon at the start, but the colon is not written to the temporary file. Also note that Qedit removes all leading spaces between the colon and the first character on the line. The :Endfile command closes the file as a temporary file. If the session already has a file with the same name, Endfile asks the user if he wishes to purge the existing file or rename the new one. If you don't want the end-user to go through this dialogue, you should :Purge the existing file before the :Beginfile.

Examples

You can use this file as input to programs, using a :File command and/or the Stdin parameter of Run:

:purge basename,temp

:beginfile basename

:menu

:endfile

:file inname=basename,oldtemp

:run dbutil.pub.sys,create;stdin=*inname

:reset inname

:purge basename,temp

Notes

A useful application of :Beginfile is to create command files in job streams. However, when creating a file with :Beginfile in a job stream, be certain that each data line starts with a colon (:). Otherwise, Qedit thinks that those are Qedit commands and it attempts to execute them.


Changes one string or column range to another string in some or all of your lines. There are two basic varieties of Change:

 

STRINGS

replace one string with another

COLUMNS

replace a column range with a string

 

Change (Changing Strings)

Replaces one string of characters by another string, the two strings being separated by a single quote character.

CHANGE "string1"string2" [ rangelist ]

(Q=no display, J=verify, T=CobX Tag)

(Default: rangelist = *)

The string1 tells Change what string of characters to find. The default for string1 is the last string used, and you specify this default via the null string (e.g., change ""xxx"). The null string recalls the last string and the window used with it. If the target string1 occurs more than once in a line, Qedit changes every occurrence.

The string2 tells Change what characters to substitute. In this format of the Change command, only three quote characters are used to define the two strings, not four as you would normally expect. Another oddity is that string2 does not become the current string. This is so that you can do another Change or Find command using "" as the target (i.e., the last string), finding and fixing multiple occurrences of the same string (e.g., find "nad"; CH ""and"; F; CH ""and"; ...). The third difference of string2 is that a null string for this parameter actually means "null". change "very"" 100 means remove "very" from line 100.

The rangelist tells Change what lines to search for string1. The default rangelist is the current line only.

If string2 is shorter than string1 (e.g., change "Robert"Bob"), Qedit shortens the line by shifting the rest of the line left. If string2 is longer (e.g., change "Bob"Robert"), Qedit lengthens the line by shifting characters right. If string2 is so much longer that the line would be too long, Qedit sends you into the Modify command to fix the line by hand.

Change prints each line that it updates, unless you use CQ.

Examples

/list 55                 {display line with mistake}

   55     select lines contaning both of two

/change "contan"contain" {change string in current line}

   55     select lines containing both of two

 

/change "sub"subindex" all    {make a global change}

   10     subindex = subindex + 1

   11     table(subindex) = 0

  213     if subindexway = 0  {oops-bad change!}

 

/cj "cust"Customer" 200/300   {change with user approval}

  225    Display Customer     {shown for approval}

Change okay (Y,N,or Modify) [No]: yes

 

/list 9           {display line to review}

    9     The test results were very exciting.

/c "very""        {remove word, change to null string}

    9     The test results were exciting.

 

/find "wiith"     {search forward for line with error}

   99    the string is combined wiith the second string

/c ""with"        {change "wiith" to "with"}

   99    the string is combined with the second string

Using Alternates to Quote

You may select your own quote character if you find " too much work because it is a shifted key. Among the alternatives are \ : and ' (apostrophe). See the "Glossary[Help19] " for more on strings and other alternates to quotes.

/c :wiith:with:

/c \wiith\with\

Approving Each Changed Line

Use CJ to give yourself approval over each change before it is updated. With CJ, Qedit displays the line as it would be and asks you for a Yes, No, or Modify answer. Use CJ when you have trouble working out the precise strings to change.

Searching for Two Strings at Once

Because the rangelist can contain a search string, you can actually select lines containing both of two strings:

/c "xxx"filename" all          {"xxx" becomes "filename" in ALL}

/c "xxx"filename" "rename"     {line must contain "rename" too}

Including a Window

The form of Change command just described requires only three quotes per command, but does not allow all options. You cannot specify a special window - you will always use the default Set Window value. To do a Change with a special window, you must specify four quote characters, two for each string:

 CHANGE "string1" (window) "string2" [ rangelist ]

Each string is delimited by two quote characters and the two strings must be separated by a space or a comma. Between the two strings you may insert a window such as (SMART) or (20/30) or (UPSHIFT).

Changing Within a Column Range

If you insert a column window, Qedit changes only the columns within the window. Columns outside the window are untouched:

/change "CUSTREC" (10/39) "CUSTOMER-RECORD"

In this example, "CUSTREC" is expanded to "CUSTOMER-RECORD", but the data at column 40 and beyond is not moved. In addition, the Change must not cause the rest of the window to overflow.

Changing Uppercase and Lowercase

If you specify an upshift window, Qedit ignores the case of letters when matching the target string. It will match words that are spelled with caps or without:

/change "JONES" (upshift) "Fitz-Jones" all

In this example, Change selects lines containing "JONES", "Jones", or even "joneS".

Avoiding Changes to Embedded Words

If you specify a Smart window, Qedit rejects those matches in which the target string is actually in the middle of another word:

/change "FRANK" (smart) "Frank" all

This example selects "FRANK", but reject "FRANKLYN." You can combine Smart and Upshift.

Patterns and Windows

In other commands the window can specify a pattern to match. In the Change command patterns are not allowed, because Change cannot perform pattern changes. However, a string specified in the rangelist portion of the Change command may be a pattern. For example:

/change "CUSTREC" "CUST-REC" "@01@PIC@" (pattern)

                 {change custrec to cust-rec in all lines that}

                 {   also contain "01" and "PIC" in that order}

CobX Tags

Cobol tags are short strings stored in columns 73 to 80 of CobX source files. The Cobol tag value is defined using the Set X command. Once enabled, updated lines and added lines are automatically updated with the tag. They can also be modified manually with custom tag values.

In its regular form, the Change command affects only the text area in columns 7 to 72. If you wish to make changes to Cobol tags, use the T suffix. You can think of it as the Tag option. This option operates only on the tag area itself, columns 73 to 80.

/change "CUST" "SUPP" all

                 {change cust to supp in all lines.   }

                 { cust must be between columns 7 and 72.  }

/changeT "CUST" "SUPP" all

                 {change cust to supp in all lines.        }

                 { cust must be between columns 73 and 80.  }

To to this, the Tag option temporarily changes the margins to (73/80). Qedit displays a warning every time this option is used. Because the margin values have changed, explicit column range in a Window can only be between 73 and 80.

/changeT "CUST" (50/60) "SUPP" all

Warning:  ChangeT: editing the Cobol tag area only (73-80).

Error: Window

/changeT "CUST" (73/80) "SUPP" all

Warning:  ChangeT: editing the Cobol tag area only (73-80).

   10      SUPP0102

1  line changed

Because the margins have been changed, Qedit displays text in the tag area only except when the Justify option is used. In this case, Qedit prompts for confirmation before making the change. It would be hard to determine if a line needs to be changed based only on the tag value. So, when the Justify option is used, Qedit displays the complete line. The user has the option to accept the changes, reject the changes or manually modify the line. If the user chooses to modify the line, only the tag is displayed.

Change (Changing Columns)

Replace some columns in some lines with a new string of characters. Use Change to insert columns, shift text left, or shift text right.

CHANGE column [/column] [(window)] "string" [rangelist]

(Q=no display, J=verify)

(Default: rangelist = *)

Change replaces the target column range with the string in the lines of the rangelist. You can use this to insert a string at a specified column. You can also use it to replace, expand, or contract specified columns.

If you specify a single column instead of a range, Qedit inserts the string before that column and shifts the rest of the line to the right. You can create new columns by inserting blanks in front of a position (e.g., change 5 " ").

If you specify a range of columns, Qedit replaces that column range with the string. The string may be the same length as the column range, longer, or shorter. If the string is shorter than the column range deleted, the rest of the line shifts left. If longer, the rest of the line shifts right. You can remove columns entirely by changing them to a null string (e.g., change 5/7 "").

Examples

/change 5"|"all      {draw vertical line of "|"s in file}

/cq 1/2 "" 10/15     {shift lines 10/15 left 2 spaces}

 

/cq 1 "   " 10/15    {shift lines 10/15 right 3 spaces}

 

/cq 1(1/8)" " all    {shift columns 1/8 right 1 space}

                     {don't change text beyond column 8}

 

/change 12/12 ::     {delete column 12 in the current line}

Notes

See the discussion of windows under "Changing Strings". Those notes also apply to column changes.

The first column number is usually 1,except for standard COBOL source files, where it is 7 (seven). The last column number depends on the current values for Set Language, Set Length, and Set Right. See the COBOL section in the chapter "Using Qedit with MPE Programming Tools."

Change prints each line modified, unless you use CQ. CJ asks you to verify each change.


Shut the current work file and remove it from the recently accessed file list.

CLose

(Default: none)

The Shut command is the normal way to close a workfile. When you Shut a file (or Open another one), Qedit remembers the name of the current workfile in a list of recently accessed files. This allows you to reopen the file using open ?. However, the list is of limited size. If you are not coming back to edit the current file again, use the Close command instead of Shut. This keeps other file names from falling off the bottom of the list.

Examples

/open abc

/open def

/close       {close "def" and forget it}

/open *      {current file is now "abc"}


Copies one or more columns to a different location on the same line.

COLCOPY source [ /source2 ] destination1 [ /destination2 ] [ rangelist ]

(Q=no display, J=verify, T=CobX Tag)

(Default:  rangelist = *)

Colcopy copies text in columns specified by source1 and source2 to the destination columns specified by destination1 and destination2 in the lines of rangelist. Even though Colcopy can modify multiple lines using a rangelist, it really operates on one line at a time. You can not copy columns from one line to another.

Source and destination columns always represent the original location. All changes are based on that assumption.

If source1 only is specified, Qedit copies just that column (length of 1). If destination1 only is specified, the source columns are inserted at that location. If you wish to replace a single column, enter a destination range where destination1 and Destination2 are the same e.g. Colcopy 1 10/10.

/list 1

   1     abcdefghijklmnopqrstuvwxyz

/colcopy 1 10          { insert column 1 at column 10 }

   1     abcdefghiajklmnopqrstuvwxyz

1 line changed

/colcopy 1/5 10        { insert columns 1/5 at column 10 }

   1     abcdefghiabcdejklmnopqrstuvwxyz

1 line changed

If destination1 and destination2 are specified, text in these columns is replaced by the source text. If the source text is narrower or wider, the line is shortened or expanded as needed.

/colcopy 1 10/15     { copy column 1 to columns 10/15 }

   1     abcdefghiapqrstuvwxyz

1 line changed

/colcopy 1/5 10/11   { copy columns 1/5 to 10/11. Line expands. }

   1     abcdefghiabcdelmnopqrstuvwxyz

1 line changed

/colcopy 1/5 10/20   { copy columns 1/5 to 10/20. Line shortens. }

   1     abcdefghiabcdeuvwxyz

1 line changed

Trailing Spaces

Trailing spaces on the line are not significant. This means that a line can expand until a non-space character reaches  the current right margin (Set Right[Help20] ). However, trailing spaces from the source text are significant and are  copied in the operation.  If the line can not be expanded further, Qedit displays a warning message and allows the user to modify it.

/list 2

   2     abcd     efghiabcdeuvwxyz

/colcopy 1/8 20        { insert columns 1/8 at 20 }

   1     abcd     efghiabcdeabcd    uvwxyz

1 line changed

/Set right 30

/colcopy 1/5 30        { insert columns 1/5 at 30 }

 

Warning: Source columns could not be inserted. Please modify. (Warning 2)

   1     abcd     efghiabcdeabcd    uvwxyz

1 line modified

Overlapping Columns

When source and destination columns do not overlap, the results are straightforward. If source and destination columns overlap partially or completely, the results might not be as expected. Keep in mind that:

·         source and destination columns are always based on the original line

·         the destination columns are removed

·         the source columns are put in their place

Approving Each Changed Line

Use COLJ to give yourself approval over each change before it is updated.  With COLJ, Qedit displays the line as it would be and asks you for a Yes, No, or Modify answer.

CobX Tags

Cobol tags are short strings stored in columns 73 to 80 of CobX source files. The Cobol tag value is defined using the Set X command[Help21] . Once enabled, updated lines and added lines are automatically updated with the tag. They can also be modified manually with custom tag values.

In its regular form, the Colcopy command affects only the text area in columns 7 to 72. If you wish to make changes to Cobol tags, use the T suffix. You can think of it as the Tag option. This option operates only on the tag area itself, columns 73 to 80.

/ColT 73/74 79/80 all      { copies content of columns 73 and 74 }

                        { into columns 79/80                  }

/ColT 73/74 75 all         { inserts content of columns 73 and 74     }

                        { in column 75. Columns 76-80 are shifted. }

To to this, the Tag option temporarily changes the margins to (73/80). Qedit displays a warning every time this option is used. Because the margin values have changed, explicit column range in the source and destination columns can only be between 73 and 80.

/ColT 23/24 79/80 all

Warning:  ColcopyT: editing the Cobol tag area only (73-80).

Error:  The Sourcestart column (23) is not between 73 and 80

 

/ColT 73/74 79/80 10

Warning:  ColcopyT: editing the Cobol tag area only (73-80).

   10      ME0307ME

1  line changed

Because the margins have been changed, Qedit displays text in the tag area only except when the Justify option is used. In this case, Qedit prompts for confirmation before making the change. It would be hard to determine if a line needs to be changed based only on the tag value. So, when the Justify option is used, Qedit displays the complete line. The user has the option to accept the changes, reject the changes or manually modify the line. If the user chooses to modify the line, only the tag is displayed.


Moves one or more columns to a different location on the same line.

COLMOVE source [ /source2 ] destination1 [ /destination2 ] [ rangelist ]

(Q=no display, J=verify, T=CobX Tag)

(Default:  rangelist = *)

Colmove moves text in columns specified by source1 and source2 to the destination columns specified by destination1 and destination2 in the lines of rangelist. The source columns are removed from their original location.  Even though Colmove can modify multiple lines using a rangelist, it really operates on one line at a time.

You can not move columns from one line to another. Source and destination columns always represent the original location. All changes are based on that assumption.

If source1 only is specified, Qedit moves just that column (length of 1). If destination1 only is specified, the source columns are inserted at that location.  If you wish to replace a single column, enter a destination range where destination1 and Destination2 are the same e.g. Colcopy 1 10/10. A move means the original columns are removed and the line is shifted left. Then the source text is inserted at the destination.

/list 1

   1     abcdefghijklmnopqrstuvwxyz

/colmove 1 10          { move column 1 to column 10 }

   1     bcdefghiajklmnopqrstuvwxyz

1 line changed

/colmove 1/5 10        { move columns 1/5 to column 10 }

   1     fghiabcdejklmnopqrstuvwxyz

1 line changed

If destination1 and destination2 are specified, text in these columns is replaced by the source text. If the source text is narrower or wider, the line is shortened or expanded as needed.

/colmove 1 10/15     { move column 1 to columns 10/15 }

   1     bcdefghiapqrstuvwxyz

1 line changed

/colmove 1/5 10/11   { move columns 1/5 to 10/11 }

   1     fghiabcdelmnopqrstuvwxyz

1 line changed

/colmove 1/5 10/20   { move columns 1/5 to 10/20 }

   1     fghiabcdeuvwxyz

1 line changed

Trailing Spaces

Trailing spaces on the line are not significant. This means that a line can expand until a non-space character reaches  the current right margin (Set Right[Help22] ). However, trailing spaces from the source text are significant and are moved in the operation.

/list 2

   2     abcd     efghiabcdeuvwxyz

/colmove 1/8 20        { move columns 1/8 to 20 }

   1      efghiabcdeabcd    uvwxyz

1 line changed

Overlapping Columns

When source and destination columns do not overlap, the results are straightforward. If source and destination columns overlap partially or completely, the results might not be as expected. Keep in mind that:

·         source and destination columns are always based on the original line

·         the source columns are removed

·         the destination columns are removed

·         the source columns are put in their place

Here is an example:

/list 1

   1     abcdefghijklmnopqrstuvwxyz

/colm 6/20 15

   1     abcdefghijklmnopqrstuvwxyz

1 line changed

Apparently, nothing has changed but, in fact, something did happen to the line. Qedit removed the source columns "fghijklmnopqrst" and tried to insert the original text where column 15 used to be. Column 15 was part of the area that has been removed so Qedit inserts the text where it should have been i.e. between "e" and "u". So, it's putting the original text back where it was.

Moving Passed the Right Margin

Destination columns can exceed the current right margin. In this case, Qedit assumes the columns should be moved to the end of the line. Effectively, the source columns are inserted in the rightmost columns of the line. The destination columns do not have to be a precise value. They just need to be larger than the current right margin. If the right margin is currently set at 80, the following commands yield the same results.

/v right

Set Right 50

/lt2

         ....+....10...+....20...+....30...+....40...+....5

   2     abcdefghijklmnopqrstuvwxyz

/colm 1/5 51

   2     fghijklmnopqrstuvwxyz                        abcde

1 line changed

/colm 1/5 88/90

   2     fghijklmnopqrstuvwxyz                        abcde

1 line changed

Approving Each Changed Line

Use COLMJ to give yourself approval over each change before it is updated.  With COLMJ, Qedit displays the line as it would be and asks you for a Yes, No, or Modify answer.

CobX Tags

Cobol tags are short strings stored in columns 73 to 80 of CobX source files. The Cobol tag value is defined using the Set X command[Help23] . Once enabled, updated lines and added lines are automatically updated with the tag. They can also be modified manually with custom tag values.

In its regular form, the Colmove command affects only the text area in columns 7 to 72.If you wish to make changes to Cobol tags, use the T suffix. You can think of it as the Tag option. This option operates only on the tag area itself, columns 73 to 80.

/ColmT 73/74 79/80 all     { copies content of columns 73 and 74 }

                        { into columns 79/80                  }

/ColmT 73/74 75 all     { inserts content of columns 73 and 74     }

                        { in column 75. Columns 76-80 are shifted. }

To to this, the Tag option temporarily changes the margins to (73/80). Qedit displays a warning every time this option is used. Because the margin values have changed, explicit column range in the source and destination columns can only be between 73 and 80.

/ColmoveT 23/24 79/80 all

Warning:  ColcopyT: editing the Cobol tag area only (73-80).

Error:  The Sourcestart column (23) is not between 73 and 80

 

/ColmoveT 73/74 79/80 10

Warning:  ColcopyT: editing the Cobol tag area only (73-80).

   10      ME0307ME

1  line changed

Because the margins have been changed, Qedit displays text in the tag area only except when the Justify option is used. In this case, Qedit prompts for confirmation before making the change. It would be hard to determine if a line needs to be changed based only on the tag value. So, when the Justify option is used, Qedit displays the complete line. The user has the option to accept the changes, reject the changes or manually modify the line. If the user chooses to modify the line, only the tag is displayed.


Qedit supports many commands for compiling using MPE V or CM compilers: three for COBOL, two for FORTRAN, SPL, Pascal, and RPG. To select a default CM COBOL compiler, use Set Whichcomp. Qedit provides a generic :Compile command that uses Set Language to determine which compiler to use. Once you have compiled a program, you can also :Prep and :Run it from within Qedit.

The generic :Compile command does not currently apply to NM compilers. Instead, use the regular command files in Pub.Sys, which we adjust to use our special Qcompxl routines (e.g., COB85XL).

Commands for MPE V and CM Compiles

                COMPILE files [ ;INFO [=] "string" ]

                CO files

                COBOL files {see Set Whichcomp}

                COBOLI files

                COBOLII files

                SPL files

                RPG files

                FORTRAN files {see Set Whichcomp}

                FTN files {FORTRAN 77}

                Pascal files

The files Parameters

All of the compile commands use the same file parameters:

:COMPILE text, usl, list, master, new

The text file is the file that contains the source code. It may be a Keep file or a Qedit workfile (if the compilers have been properly "fixed"). Compiler fixing is part of the standard Qedit install jobs. But, the "copylib" file for COBOL cannot be a Qedit file; it should be KSAM. If the text file is "*", the currently open workfile is compiled. If none is open, the one just closed is compiled.

The usl file is the file where the compiler deposits the machine code that it generates. This file must be "prepped" into a program file before you can actually :Run. The usl file defaults to $newpass (or $oldpass). You can specify a USL file created via the Segmenter (-buildusl) or by a previous compile (e.g., :save $oldpass after compile).

The list file is where the compiler sends its listing. The default is to print on $stdlist (i.e., your screen). If the list file is "LP", it always refers to Dev=LP. To direct the listing to a device name other than "LP", use a regular File command:

/file sp;dev=serialp

/cobol x,,*sp  {compile file x, list to device Serialp}

The master file is a master source file that is merged with the text file by line number at compile time. This parameter is not supported for FORTRAN 77, Pascal, or C.

The new file is an optional output disc file that can be created by merging the master file and the text file.

Examples

/cobol abc.source,,lp       {output goes to dev=lp}

/open def.source            {open another source file}

/co *                       {Lang of file selects compiler}

 

/shut                       {close current workfile}

/spl *                      {compile errors to terminal}

/open *                     {resume editing}

Compiling a Range

You can specify a line range instead of a filename if you like:

/fortran 300/414.5

This option works only with the current workfile, accepts only explicit line numbers (e.g., 1.0, not FIRST), and allows only a single range (e.g., not 5/10,20/30).

Set Whichcomp Command

Qedit has the :COBOLII command to run the COBOLII program and :COBOLI to run the COBOLI program. To use COBOL-85, you need to use Set Whichcomp.

/set whichcomp cobol 85    {run COBOLII,COBOLIIX}

/set whichcomp cobol 74    {run COBOLII for :COBOL}

/set whichcomp cobol 68    {run COBOLI for :COBOL}

Qedit has the :FORTRAN command to compile FORTRAN 66 and :FTN to compile FORTRAN 77. Use Set Whichcomp to make FORTRAN 77 the default for :Compile:

/set whichcomp fortran 77

Interrupting with Control-Y

You can use Control-Y during a long compile to interrupt the compiler. It should print the question "Terminate program [no]?". Answer "YES" to abort the compile, or answer "NO" to continue compiling.

Compile Priority

Normally, the compiler is run in the same priority subqueue as Qedit, but the System Manager can specify a maximum subqueue for compiles that is lower than the programmer's logon priority. In these cases, the compiler is run in the lower subqueue (see the installation chapter). The System Manager can also specify that no on-line compiles at all are to be done in Qedit.

Include Files

The Qedit compiler interface interprets $include commands within Qedit workfiles at compile time. This is the syntax:

 $INCLUDE filename or !INCLUDE (filename)

The HP Pascal syntax for $include is okay: $include 'filename' $. For Transact systems, use !Include with the filename in parentheses. For C, use #Include <file>. The Include statement must start at the beginning of the line.

When the Include command is encountered during the compile, the Include file is opened, and the lines are returned to the compiler with their actual sequence numbers. If the file cannot be opened, Qedit returns the include line to the compiler for interpretation. If the file can be opened, the include line is returned as a comment. Include is recognized only in Qedit workfiles, not in Keep files. However, "included" files themselves can be either Qedit files or Keep files. Nesting of includes is supported to ten levels deep.

Note that the SPL compiler interprets lines that start with an exclamation mark as a comment, even !include. The Qedit compiler interface treats this as a valid !include statement, not a comment. To prevent this, use the SPL << >> comment syntax instead.

Compiling to a Disc File

If you direct your compiler error listing to a disc file, you can use Qedit to examine the errors and fix them.

First, add a line to the beginning of your workfile specifying "$control nolist", which means "list only lines with errors":

/add 1.1

   1.10  $control nolist

   1.11  //

Later, when you want a full listing, change this line to "$control list", or "$control source" for COBOL.

Build a disc file, compile the listing into it, and display it:

/:build list;rec=-132,64,f,ascii;disc=4000,32

/:spl *,,list   {compiler listing goes to List}

/lq list        {displays compiler listing on your terminal}

On subsequent compiles, you can use the same file and the compiler should erase the previous contents. With this technique, you can do your compile in a job stream and continue editing another file while you are waiting. When the stream job finishes, you can check the results from within Qedit, even if you are remotely located from the batch line printer. Using :Tell, you could have the Job send a message to your Session when it completes.

Trapping Compiler Syntax Errors

Qedit can trap compiler syntax errors and show you each line in your source code for you to correct. See the chapter "Using Qedit with MPE Programming Tools" for full details.


Deletes lines from the workfile.

DELETE [ rangelist ]

(Q=no display, J=verify)

(Default: rangelist = *)

Delete prints each line in rangelist, with an underline character after the line number, as it deletes them, unless you use DQ.

Notes

If you do Delete All, you must answer "Y" to a verifying question before the lines will be deleted. This also applies if you Set Check Delete is ON and you delete more than 5 lines.

If you delete the wrong lines, you can cancel the Delete by striking Control-Y. However, you must use Control-Y before you press Return on the next command line. Qedit responds by printing "Undeleted" or "Canceled". Once you have typed in the next command line and press Return, your chance to recover using Control-Y is gone and the previous Delete command is final. You can still undo the deletion using Undo.

Delete All resets the Set Keep Name (default for Keep command) so that a later Keep command will not wipe out the wrong file by mistake.

Confirm Each Deletion

Use DJ to give yourself approval over each delete before it is carried out.  With DJ, Qedit displays the line (even if the Quiet option is used) and asks you for a Yes, No, or Stop answer.

Answer No or Return to keep the line.

Answer Yes to delete the current line. Unlike the basic Delete operation where lines are removed with the next command, lines confirmed in DJ are deleted immediately. They can be recovered with an Undo command.

Answer Stop if you wish to stop the delete process. When you use Stop, lines that have been deleted are not recovered automatically. Use Undo to recover them.

Examples

/delete 5/6           {remove lines 5 and 6 from file}

    5    _this is line 5

    6    _and this is line 6!

 

/dq 2 10/49           {delete lines 2 and 10/49}

 

/delete "."(1/1)      {delete lines with "." in column 1}

                      {Implied rangelist is ALL}

 

/del "."(1/1 nomatch) {delete lines without "."}

 

/d "~"(pattern)       {delete all blank lines}

 

/dj 3/66

    3    this is line 3

Delete it (Y,N or Stop) [No]:

    4    this is line 4

Delete it (Y,N or Stop) [No]:Y

    5    this is line 5

Delete it (Y,N or Stop) [No]:n

    6    this is line 6

Delete it (Y,N or Stop) [No]:S

1 line Deleted!


Purges the current workfile, a named MPE file, a Copylib member, or a spool file, after first verifying with the user.

DESTROY [ filename ]

(Default: current workfile)

The filename parameter can be the name of any file that you have write access to, "$" to refer to the "last" file name mentioned in another command, or "*" to refer to either the current workfile or, if none is currently open, the one just Shut. To purge a Copylib member, put the name in parentheses and do a :File command for "copylib". To purge a native-mode spool file, just refer to the number preceded by a #.

Examples

/destroy crept23.dead

CREPT23.DEAD.GREEN,OLD Qedit File, # of lines=162

Purge file [no]? Oui    {that's French for Yes}

/open ctemp

/des *

CTEMP.BOB.GREEN,OLD Qedit file, # of lines=15

Purge file [no]?        {Return key means "no"}

File NOT purged

/list datapg2           {check contents of file}

/destroy $              {...then purge it}

 

/destroy #o1234         {purge an NM spool file}

 

/file copylib=copylib.pub.develop

/destroy (custrec)

Notes

The MPE :Purge command also purges files, but it does not ask for your approval first. If you abbreviate the Purge command (as in PU), you are sent to the Destroy command instead.

If you are purging an opened file that is "clean" (that is, a file that has not been changed since the last save), Qedit does not ask for approval before purging the file.


Prints a message on the terminal - handy for instructions in UDCs. The message is not in quotes and is separated from the command name by a single space. See also Pause.

:DISPLAY [ message ]

(Defaults: blank line)

Examples

/display To get out of Suprtool, type Exit

/display

/run suprtool.pub.robelle


Divides a line into two or more lines at specified columns. Divide can turn a field-oriented record into a series of lines with one field per line. It can also append a blank line after every line in a file. See also VV in Visual. For the opposite of Divide, see the Glue command.

DIVIDE [ ( columnlist ) ] [ rangelist ]

(Default: columnlist = ], rangelist = *)

The columnlist parameter is one or more valid column numbers in ascending order such as (10 20 30), or it may be a (]) for "after end-of-line" (i.e., append a blank line). All characters from the specified column to end-of-line are moved to a new line after the original line.

The rangelist parameter specifies one or more lines in the file. Each line is split into two or more lines according to the column parameter. The default rangelist is the current line.

The default columnlist is "]", except when the Divide command has no parameters or only a "string" rangelist. Then the current line is split at the "current column". When Divide has no parameters, the current column is "]". Following a successful string match, the current column is the first column of the string position in the line(s).

Examples

/find "abc";divide     {move "abc..." to a new line}

/list *+2;divide       {move ahead 2 lines, add a blank line}

/divide (20) all       {split every line at column 20}

/divide (20 40) @      {split every line at columns 20 and 40}

/divide (10 20 30)     {split current line at 3 places}

/divide (]) */*+10     {add blank line after lines */*+10}

/divide (20)"Qedit"    {split all "Qedit" lines at column 20}

/divide "Qedit"        {split all "Qedit" lines at "Qedit"}

/divide (])"Qedit"     {add blank line to all "Qedit" lines}

Notes

After a Divide command, the current line is the last line divided. To not print the lines, use DivideQ.

Divide works within the current Left and Right margins. That is, characters to the right or left of the current margins are not moved.

When working with COBOLX files, the Divide command does not consider the tag (columns 73 to 80) as part of the data. This means that the current tag data is not moved to the new split line. It also means that you cannot divide a line passed column 73.

The QEDITCOUNT JCW is updated with the number of lines divided, rather than the number of lines resulting.


The :Do command repeats (without changes) any of the previous 1,000 commands.

                DO          [ start [ / stop ] ]

                                [ string ]

                                [ ALL | @ ]

(Default: repeat the previous command)

Commands are numbered sequentially from 1 as entered and the last 1,000 of them are retained. Use the :Listredo command to display the previous commands. You can repeat a single command (do 5), a range of commands (do 5/10) or the most recent command whose name matches a string (do list). If you want to modify the commands before executing them, use :Redo or Before.

Examples

/listredo         {or /bj or ,, }

/do               {do previous command again}

/do 39            {do command line 39 again}

/do 5/8           {do command lines 5 to 8 again}

/do list          {do most recent List command}

/do show          {do last starting with "show"}

/do showjob job   {do last "showjob job" command}

/do @job          {do last containing "job"}

/do -2            {do command before previous}

/do -7/-5         {do by relative line number}

/do 5/            {do command lines 5 to "last"}

Notes

The :Do command can be abbreviated to ",." as in MPEX, but you cannot use ";" to combine commands on the same line. To stop a :Do All, use Control-Y.


Pulls up "errors" in source files for the user to correct. :Editerror depends upon a special error-file that is usually generated by the program that detects the errors. See Appendix B for the file format. Some compilers, such as SRN's SPLash! compiler, can generate Qedit error-files. For COBOL, SPL, Pascal, and HP C, Qedit converts compile errors into :Editerror format using the Editerr utility program.

                :EDITERROR error-file [VISUAL | NEXT | PREV]

(Default: Line mode)

There are two basic types of :Editerror command: the first command after a compile, and a subsequent command.

/:editerror error-file [VISUAL] {first command}

/:editerror error-file NEXT      {subsequent}

Finding the First Error

The first command after a compile would not specify NEXT or PREV and would find the first error in the error-file. Qedit prints the error message, then Opens or Texts the source file containing the error, and positions itself to the line with the error. If the current open file is a Qedit workfile, :Editerror does an automatic Shut command on it. If the current open file is Qeditscr and you did a previous Text and made some changes, :Editerror does an automatic Keep command on it (you will see the question "Purge existing file?"). :Editerror can handle Copylib members if the member name is enclosed in parentheses and followed by the name of the Copylib file (without a space).

If you specify VISUAL on the first command, Qedit assumes that you wish to correct the errors in Visual mode. Qedit does not throw you into Visual mode, but if you enter (or re-enter) Visual at this point, Qedit will display the error message at the top of the screen where the error occurred. If you do not specify Visual, Qedit assumes that you want to correct the errors in Line mode. Normally, the first command would be included in the UDC that does your compile.

Subsequent Errors

Subsequent commands retrieve the "next" (or "previous") error in the same error-file.

If you used the Visual option on your first command, Qedit allows you to use the F4 and F3 keys in Visual to find the Next or Previous error. Visual mode does the necessary :Editerror commands for you automatically.

If you do any string searches in fixing your errors, you will lose the ability to use F4 and F3 for Next and Previous Error. This often happens when you must search backward in your file for the definition of a data item. If the current string value does not equal "$error", the F4 and F3 keys do not pull up the next and previous errors to be fixed. You can now reactivate error-fixing by searching for "$error" explicitly.

You do not need to go through all the errors before recompiling. If you go past the last error to be fixed, Qedit prints a warning that says so. The same occurs if you try to go backwards beyond the first error to be fixed. Qedit does not turn off error-fixing just because you reach the end -- you can still go back to the previous error by pressing F3.

Resetting :Editerror Mode

Once you do the :Editerror command you are in a special mode where the F4 and F3 keys pull up errors. This mode stays enabled until one of the following resets it:

·         another :Editerror operation

·         :Editerror without any parameters

·         any explicit Text, Open, Keep, Shut or New command

·         using the F8 key to exit from Visual back to Line mode

Line Mode Tip

If you use Line mode to correct your errors, you will need a UDC to retrieve the next and previous error. For example, if the error file is called cerrors:

nexterror

option nolist

editerror cerrors next

*****

Screen Format

In most programming languages, it makes more sense to see the lines above the point of error, rather than after. The error line becomes the current line in :Editerror and the default Visual display is zero lines above the current line and 19 lines after. You can of course override this with Set Vis Above and Set Vis Below. If your Above value is 0, :Editerror changes the screen format so that there are 9 lines above and 9 fewer lines below (with a minimum of 9). Naturally, :Editerror saves the original values and resets them when you end error-fixing mode.

UDCs

See the UDCs called COBERR and EDERR in the file Udc.Catalog.Robelle for examples of how to use the Editerror command effectively.


The :Escape command causes control to leave all User Commands (regardless of nesting levels) and return to the Qedit prompt. The :Escape command is valid only in User Commands (UDCs and command files). It returns an error if executed from the Qedit prompt or in a Use file.

:ESCAPE

(Default: none)

Examples

if cierror = 999 then

   escape

endif

 See also the :Return command.


Exit from Qedit and return to the operating system.

EXIT [string]

The current workfile is closed and Qedit terminates. The F8 user key is the same as Exit.

To close the current workfile without exiting, use Shut. Remember: you do not need to Exit in order to do :COBOL, :Prep or :Run, but you do need to Exit in order to do :BYE.

When you Exit, Qedit checks whether you have any unsaved edits in any of your Extra scratch files. If so, you are prompted to Discard? them, or stay in Qedit to save them. If your primary Qeditscr file is temporary and named "Qeditscr", Qedit warns you that you forgot to save your changes, but does not purge the file. You can re-enter Qedit, Open it and resume work or save your edits.

Examples

:hello bob.green      {log on to the computer}

:run qedit.pub.robelle

/open qedit.doc       {open file to work on}

/modify 2482.5/       {do some editing...}

    .

    .

    .

/:prose *             {use a UDC to format a document}

/exit                 {ready to quit for the day!}

:bye                  {disconnect from computer}

Notes

To avoid accidental Exit as a result of pressing F8 one time too many, you can run Qedit with Parm=64. This forces user approval of Exit.

The only situation where Qedit does not terminate on an Exit is when you invoke Qedit from another user program (e.g., from SPOOK, MPEX, or SELECT). In this case, Qedit "suspends" so that the father process can quickly "activate" Qedit again. When you reactivate Qedit you can resume editing with Open *. If the father does not want to hold onto Qedit, he should get rid of it with the KILL intrinsic. If the father process is like HPDesk and does not notice that Qedit remains suspended, you should :Run Qedit with Parm=32 or do Set Suspend Off to force Qedit to terminate on Exit instead of suspending.

The string parameter is only allowed when Qedit is running as a server[Help24] . The string is a message sent to the Qedit for Windows[Help25]  client. The client receives the exit notification, displays the message and disconnects immediately. If no string is specified, a default message is displayed.


Finds the next line in the workfile that contains a string. Use Findup if you want to search for the previous line. Find always finds a single line that matches a string. Use the List command if you want to find many lines that match a string.

FIND [string] [linenum]

FIND [string range] [linenum]

(Q=no display)

(Default: string = recent; linenum = *+1)

Find defaults string to be "same as last string" and linenum to be "starting from the next line". This saves having to repeatedly type the string and linenum. Once you have defined your string and starting position, just enter "F" to find the next line.

Find does not start searching at the beginning of your file. Find will start searching for the string at the line after the current line, unless you specify a linenum to start the search. If you want to search from the beginning of your file, use Find string FIRST.

The F4 user key does the same function as Find with no parameters.

Examples

/find "exit" first     {find first line with "exit"}

    45     this command will cause an exit from the

                                  (28)^

/f                     {find next line with "exit"}

    90     after you exit from a module, the program

                 (11)^

/f                     {continue finding lines...}

   ...

/f                     {...until you reach end of file}

Warning: No Line         {prints error and rewinds}

Error: End of File

/f                     {next Find wraps around!}

Warning: Rewind to FIRST

    45     this command will cause an exit from the

                                  (28)^

/fq"$page"(1/5);m      {find next $page and modify it}

 

/fq;c""exit"           {find next string and change it}

 

/fq;c"""               {find next string and remove it}

/f "start"/"end" [     {find string range and set ZZ}

Lines 5/11 saved in ZZ

Notes

The Q option lets you find the line without printing it. Use FQ if you intend to Modify the line after you find it.

Find prints an error when the search reaches the LAST line without locating the string. Then, if you enter another Find without a line number, the search starts from the FIRST line in the file, after printing a warning.

See the /Qedit command for a command file that uses the Find command and checks the value of CIERROR to see if the string was found. The Find command only sets the CIERROR JCW when it is executed from a User Command. It does not set the JCW when executed from $stdin or from a usefile.

To find/see all occurrences of a string in a file, use the List command.

When a string range is used and a corresponding block is found, the start and end line numbers are stored in the ZZ marker.


Finds the previous line in the workfile that contains a string. Findup can be shortened to ^. Use Find if you want to search for the next line.

FINDUP [string] [linenum]

(Q=no display)

(Default: string = recent; linenum = *-1)

Findup defaults string to be "same as last string" and linenum to be "starting from the previous line". This saves having to repeatedly type the string and linenum. Once you have defined your string and starting position, all you need to enter is "^" or "FINDU" to find the next string.

The F3 user key does the same function as Findup without parameters.

Examples

/findup "exit" last   {find last line with "exit"}

    90     after you exit from a module, the program

                 (11)^

/findup               find previous line with "exit"

    45     this command will cause an exit from the

                                  (28)^

/^                    {continue finding lines...}

   ...

/^                    {...until you reach start of file}

Warning: No Line      {prints error and rewinds}

Error: Beginning of File

/findup               {next Findup wraps around!}

Warning: Rewind to LAST

    90     after you exit from a module, the program

                 (11)^

/findupq;mod          {find string and modify it}

 

/findupq;c""exit"     {find string and change it}

 

/findupq;c"""         {find string and remove it}

Notes

Refer to the notes under the Find command.


Displays information about a self-describing file created by programs such as Suprtool. These programs store information about the record layout such as field names, data types, length.

FORM [ $lp | $lpa | $lpb ] [ filename ]

(Default:  filename = current Text file)

If filename is omitted and a workfile is currently active, Qedit uses the name of the Text file (see Verify Keep). An external filename can be specified.

If the file is not self-describing, Qedit displays the following message:

Error:  File is not self-describing.

Self-describing files on MPE have a special filecode, SD. The data description information is stored in the file userlabels. For example, a self-describing file would look like this:

ACCOUNT=  GL       GROUP=  DATA

 

FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----

                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX

 

X1DSBEDR  SD      302B  FA        3500       3500  13      320  1  1

The Form output looks like this:

Self-describing information for X1DSBEDR.DATA.GL

    File: X1DSBEDR.DATA.GL     (SD Version B.00.00)

       Entry:                     Offset

          CHAR-FIELD           X5      1  <<Sort# 1 >>

          INT-FIELD            I1      6

          DBL-FIELD            I2      8

          PACKED-FIELD         P12    12

          PACKED*-FIELD        P12    18

          QUAD-FIELD           I4     24

          ID-FIELD             I1     32

          LOGICAL-FIELD        K1     34

          DBLLOG-FIELD         K2     36

          ZONED-FIELD          Z5     40

    Limit: 3500  EOF: 3500  Entry Length: 44  Blocking: 64

LP listing

Overrides default output to $stdlist.  $lp, $lpa and $lpb send output to a file with the same name as the option.


Starts "browsing" the current file by displaying the next page "forward". You stay in "browse" mode until you enter any command (see List, jumping option).

FORWARD

(F6 key does the same)

In Line mode, Backward and Forward (or F5/F6) throw you into List-Jumping's Browse mode. Qedit displays a screen of text, where the screen size is either 23 lines or what you specify with Set List LJ, then waits for you by asking "More?". Press Return to see the next screen, typing a line number moves you to the screen starting at that line, pressing F2-F6 does the appropriate action, and F8 or "//" or Control-Y or typing any command gets you out of browse mode. At the "More" prompt, the * "current" line is the last line displayed.


Finds and recovers wasted space in the current workfile.

GARBAGE

(Q = no summary)

If you keep adding lines to a workfile and editing them, eventually you will get an "Error: Full" message in Line mode or "File nearly full!" in Visual mode, and be unable to add more lines. One method of continuing at this point is to use the Garbage command.

/garbage

/gar        {minimal command name}

Garbage combines partially full blocks to squeeze out free blocks, but it also searches the workfile for any blocks that have been "lost" (i.e., are no longer on the "free list" or the "text list"). Garbage does not release extents, nor does it reduce the EOF. It does not make your file any smaller, it just allows you to continue editing by finding usable space within the file.

Garbage prints a summary of how much space it recovered and how much is available in the file. The summary report can be suppressed using GarbageQ.

5 blocks squeezed out, 2 found, 55 used,

    10 on free list, 9 for expansion.

In this example, Garbage reports that 5 blocks were retrieved via squeezing, 2 lost blocks were found, 55 blocks are currently used to hold text, 10 empty blocks are held on a "deleted-block" list (the free list), and 9 blocks are available if the EOF is expanded toward the LIMIT.

Expanding Your File

If you need still more space, you should build a bigger file using the Text command. Text creates a workfile with room to add more lines.

/open crept23

/add

     5.11  this is a new line

 Error: Full

/shut        {close the file that is too small}

/text *      {text Crept23 into larger Qeditscr}

/shut *      {rename as new Crept23, purge old}

/open *      {open new big file and edit...}

/add

     5.11  this is a new line

Compressing Your File

If you want to compress your file into minimal disc space because you are through editing it, use Garbage to minimize the number of blocks, then use New to build a new smaller file, deriving the number of lines from a Verify Open of the old file, and copy the old file into the new with Text:

/open crept99

/garbage             {minimize number of blocks}

/verify open         {find out number of lines in file}

/shut saveold        {rename file as Saveold}

/new crept99 (2900)  {build new, smaller file}

/text saveold        {copy old file into new}


Joins a line with one or more following lines, either concatenated or at specified tab positions. Use Glue to turn a list of fields into a single record-oriented line. See also GG in Visual mode. For the opposite of Glue, see the Divide command.

GLUE [ ( columnlist ) ] [ rangelist ]

(Defaults: columnlist = ], rangelist = */*+n)

The columnlist is a list of ascending column numbers in parentheses such as (10 20 30), or ( ] ) for "after the end-of-line", which is the default.

The rangelist specifies which lines to combine. The default rangelist is the current line plus n. When you specify a range of lines, Glue joins the lines in "pairs".

Examples

/glue              {joins *+1 to *}

/gluej             {joins *+1 to * with space between}

/glue;glue         {join *+1 and *+2 to *}

/glue (10) all     {joins lines in "pairs" at column 10}

/glue (10 20 30)   {joins 4 lines into 1 record}

/glue "string"     {glue "string" lines to lines that follow}

Notes

If there are not enough lines at the end of a rangelist to fill in each column of the list, Glue does not go beyond the rangelist. If there is not enough room to move all of the characters into the line, as many characters as will fit are moved, the following line is not deleted, and Qedit prints an "overflow" warning.

After a Glue command, the current line is the line last spliced together. To suppress printing of the spliced lines, use GlueQ.

If you don't specify a list of column fields, Glue removes leading spaces from the following lines before moving them. To insert a single space between them, use GlueJ instead. If you do specify columnar fields, Glue treats spaces as valid data and moves them intact. If you specify more than one field, some nonblank data may be overwritten if the columns are too close together or the lines to be glued are too long. You can always use Undo to cancel a Glue command.

The QEDITCOUNT JCW is updated with the number of lines resulting, rather than the original number of lines that were affected.

If Left or Right margins have been Set, only the text within the margins is copied and the following lines are not deleted.

When editing COBOLX files, the tag area (columns 73 to 80) is not considered part of the data. This means that the tag string on the next line is not moved to the new line. It also means you cannot glue to columns passed 73.


Gives instructions on the use of Qedit. Everything in the Qedit User Manual is also in the Help command. "?" means the same as Help.

                HELP      [ command [ ,keyword ] ]

                                [ TERMS [ ,word] ]

                                [ INTRO ]

                                [ NEWS ]

(Default: browse through the entire help file)

(Q = Quick Reference Guide "Quick Help")

The parameters have the following meaning:

command explains command; lists subsidiary keywords to select.

command,keyword finds keyword under command.

command,@ prints everything about the command.

TERMS [,word] explains word (see "Glossary[Help26] ").

INTRO explains how to apply Qedit to typical problems.

NEWS shows any new features in Qedit.

Examples

/h text   {explain the Text command and show sub-keywords}

/h text,@ {tell all about Text.  Comma is required}

If Help cannot find your specified topic in the Qedit help file, it prints a warning and search the system help file. To get system help directly, put a colon in front of Help (i.e., /:help).

Quick Help - HQ

HQ looks for entries under the keyword Quick in the helpfile. Quick contains the text from the Qedit Quick Reference Guide, offering the experienced user a review of command syntax.

/hq visual            {full-screen options}

/hq shortcuts         {quick list of shortcuts}

Notes

The help file must be on the system for the Help command to work. If the file is missing, Qedit still works fine, but you cannot get any on-line help. The default file name is Qedit.Help.Robelle, but if you move Qedit to another account you should move the help file to that account as well. Within the Help command, use "+" to see what levels exist "beneath" you and "?" for "help on Help". The help file is organized into levels: to go back to the previous level, press Return instead of entering a keyword. Press F8 to exit the QHELP subsystem completely and return to Qedit. Use the Prev Page (or Page Up) key on your terminal to review help already printed.


Lets you explicitly write lines to the Hold file.

HOLD [ filename ] [ rangelist ]

(Default: hold current line)

(Q=hold without display)

(J=append, without erasing)

You can refer to the current contents of the Hold file by the actual file name, "hold", in any of the commands that access external files (Add-File, List, Use).

Examples

/hold 50/60        {erase Hold, hold lines}

/holdj 100/198     {append more lines to Hold}

/ho "direct"       {hold lines with string}

/open abc.src

/add 33=hold       {adds held lines to abc.src}

/holdq qedhint.help.robelle

/list hold

Implicit Hold

When using the Add command to move or copy lines within a file, Qedit overwrites a file named Hold0 with a copy of the lines. It counts the lines and tries to select a line number increment that will accommodate the number of lines being added to your workfile. So, if the command fails or if you wish to copy the same lines again, you can refer to the Hold0 file. Adding from an external file also holds the lines if you specify a rangelist for the file, and if the file is not the Hold file itself.

/add 55=hold0

/list hold0         {the Hold file is temporary}

Notes

You can save the current Hold file using the MPE Save command:

/save hold

/rename hold,newname

On MPE/iX, the Hold files are created with variable-length records and a limit of 250,000 lines. On MPE V, the Hold files are created with variable-length records and space for 3 megabytes of data.

Every time you use "hold" or "hold0" by themselves as a file name in any command, Qedit replaces the word with the fully-qualified file name of the appropriate Hold file.

/Add 1=hold

translates to

/Add 1=hold.mygroup.myacct


In command files, UDCs, usefiles, and even from the /-prompt, use If, Endif, Else and Elseif commands to create conditional logic. See also the While command, the /Qedit command and the INSIDEQEDIT JCW.

:IF expression [THEN]

:ELSEIF expression [THEN]

:ELSE

:ENDIF

Examples

Here is a sample command file to show a specific session or all sessions on the system. The parameter is the session number, which the If tests for zero default value in deciding whether to show one or all sessions:

PARM sessnum=0

setjcw jsnum=!sessnum

if jsnum=0 then

   showjob job=@s

else

   showjob #s!sessnum

endif

To invoke this command, put it in a file named "SS", then type the file name, optionally followed by a session number:

/ss

/ss 456

Although :If commands may be nested up to 30 levels deep, :Elseif provides an alternative, effectively giving you a "case" command. Any number of Elseifs may follow an If, but only one Else may follow an If or Elseif. The "Then" keyword is optional in Elseif, and in If as well.


With Justify, you can do text formatting: center lines, right-justify lines, left-justify lines, and fill text into margins.

JUSTIFY [option] [keyword ...] [rangelist]

(Q=no display)

(Default option: Null or Set Justify)

When the Justify command is processing the range of lines you specified, if you decide not to continue, press Control-Y to stop the formatting.

Options Specify Which Function

 

Justify Right

right-justify each line

Justify Center

center each line

Justify Centre

Canadian spelling!

Justify Left

remove leading spaces

Justify Format

fill lines, ragged right margin

Justify Both

fill lines, straight right margin

Justify Null

default - no changes - safety

 

Keyword Parameters of Justify

 

MARGIN column

right edge, relative to left

TWO [ ON|OFF ]

maintain 2 spaces after . ? and !

INDENT spaces

indentation for list of points

WITHINDENT

activate configured indentation

STOP "chars"

break justification when found

START "chars"

start new paragraph

 

You may shorten options and keywords to the leading letters.

Rangelist Specifies Which Lines

For the Format and Both options, the rangelist specifies some lines to format. Warning: if you type a single line number (e.g., just both 5), Qedit begins formatting lines from that line number to the end of the paragraph. Qedit sees blank lines as end-of-paragraph markers, so if you justify format all you end up with smooth and even chunks of text, set off by blank lines. This is one of the few places in Qedit where a single line number implies a range of lines.

For the Left, Right and Center options, a single line rangelist means a single line. But, you can specify a "string" rangelist to center or justify only lines containing a string. Specifying a "string" rangelist with the Format or Both options is equivalent to specifying a single line number i.e. formatting starts with the line which has the string to the end of the paragraph.

Verification Before Formatting

If Set Check Justify is ON, Justify Format and Both require user verification before formatting more than 5 lines. This should eliminate inadvertent formatting of entire source programs!

You can also use the Undo command to undo the effects of the Justify command.

Left and Right Edges for Justify

Justify works within borders called the left and right edge. The left edge is usually column 1, or column seven 7 in standard COBOL. The right edge is usually the highest column number allowed in the file (e.g., 80 for JOB files). However, if you use Set Left and Set Right to create margins for your file, Justify operates within those limits. Set Left will be the left edge and Set Right will be the right edge. You can also use the Margin keyword to establish the right edge for Justify, but remember that this edge is relative to any Set Left value.

Examples

/justify center 5/6    {center lines 5 through 6}

/j right 5/6           {right-justify lines 5 through 6}

 

/j left 5/6            {left-justify lines 5 through 6}

 

/j format 5/50         {format lines 5/50 into margins}

 

/j f 5/6               {splice lines 5 and 6 into one line}

 

/j both 5              {format a paragraph, even right edge,}

                       {  from line 5 to the next blank line}

Right Justifying Lines

Justify Right shifts each line of rangelist to the right until the last nonblank character is at the right edge. For example:

/justify right margin 50 rangelist

 Input lines:

Robelle Solutions Technology Inc.

Tools for HP3000

 Output lines:

                Robelle Solutions Technology Inc.

                                 Tools for HP3000

Centering Lines

Justify Center adjusts each rangelist line so that it is centered between the left edge and the right edge. For example:

/justify center margin 50 rangelist

 Input lines:

Robelle Solutions Technology Inc.

Tools for HP3000

 Output lines:

         Robelle Solutions Technology Inc.

                 Tools for HP3000

Left Justifying Lines

Justify Left removes leading spaces from each rangelist line, until the left-most nonblank character is at the left edge. This will left-justify the lines. Use for this option to recover from an inadvertent Center or Right option. For example:

/justify left rangelist

 Input lines:

                 Robelle Solutions Technology Inc.

                    Tools for HP3000

 Output lines:

Robelle Solutions Technology Inc.

Tools for HP3000

Filling Words into Tidy Paragraphs

Justify Format adjusts the processed lines so that the words fill the space between the left edge and the right edge, but allows the right edge to be ragged:

/justify format margin 50 rangelist

 Input lines:

The Format keyword performs a

function which is equivalent to

Format mode in TDP/3000.  Uneven lines

are converted into lines of about

the same length.

 Output lines:

The Format keyword performs a function which is

equivalent to Format mode in TDP/3000.  Uneven

lines are converted into lines of about the same

length.

Making Both Edges Even

Justify Both is similar to Justify Format, except that both the left and right edges of the text are even. This is accomplished by inserting blanks between words. For example:

/justify both margin 50 rangelist

 Input lines:

The Both keyword performs a

function which is equivalent to

Format;Just ON in TDP/3000.  Uneven lines

are converted into lines of

exactly the same length.

 Output lines:

The Both keyword  performs  a  function  which  is

equivalent  to Format;Just ON in TDP/3000.  Uneven

lines are converted into lines of exactly the same

length.

Null Option

Justify Null is included as an option to serve as a default. If Both were the default option, most of your file would be quickly formatted if you accidentally typed "J 5" instead of "LJ 5".

Configuring the Justify Command

The five options (Right, Center, Left, Format, and Both) and the four keywords (Margin, Two, Indent, and Withindent), configure the Justify command. The hierarchy of configuration values is as follows:

 Startup default (the "default default")

 overridden by

 SET Justify (the configured default)

 overridden by

 Keywords in Justify command

You set your own defaults for the Justify option and keyword values using Set Justify. Once you find the setting you like, you may want to put them in your Qeditmgr configuration file so you won't have to do the Set Justify command every time you run Qedit. For example:

/set justify null margin 50 two on

causes

/justify both 5

to be interpreted as

/justify both margin 50 two on 5

but you can override your own defaults, as in

/justify both margin 60 10/20

which merges with your Set Justify values to produce

/justify both margin 60 two on 10/20

Configuring the Right Edge

The Margin keyword specifies the right-most column for processed lines. This column is needed for the Right, Center, Format and Both options. The value you specify is relative to any Set Left margin that is effective at the time of the Justify command.

Determining the Left Edge

For the Both and Format options, the left margin is determined by looking at the first and second lines of each "paragraph". If the first and second line are indented, the entire paragraph will be indented. Of course, this indentation is relative to any Set Left.

/justify both margin 50 linenum

 Input lines:

     The Both keyword performs a

     function which is equivalent to

Format;Just ON in TDP/3000.  Uneven lines

are converted into lines of

exactly the same length.

 Output lines:

     The Both keyword performs a function which is

     equivalent to  Format;Just  ON  in  TDP/3000.

     Uneven  lines  are  converted  into  lines of

     exactly the same length.

Two Spaces at End of Sentence

Normally, when Qedit adjusts text with Format and Both, it inserts one space between each symbol, regardless of the number of spaces between symbols in the input text. If the Two keyword is ON, Justify maintains two blanks after the end of a sentence (i.e., after a . ? or !, or one of those three followed by a quote mark or a right parenthesis and a space). The default for this keyword is OFF.

Justify does not insert two spaces if the input only contains one; it merely maintains two spaces if they are there already (this means you don't have to worry about getting two spaces in a name like Calvin C. Cook).

/justify format two on margin 70  99.5/

Formatting a List of Points

The Indent keyword is a special capability for handling lists of numbered points (1., 2., 3., ...). It assumes that your text is indented and that the numbers for each point appear to the left of that indentation. The Indent parameter specifies the number of spaces at the start of each line that will not contain text to format. Justify leaves anything to the left of this border "as is". In fact, the existence of text to the left of the border acts as an "end-of-point" indicator, eliminating the need for a blank line between points to stop the justification. Indent is relative to any Set Left.

The end of each point in a list is effectively an end of paragraph. Here is a sample of what happens when you attempt to format a list of points without the Indent keyword:

/justify both margin 50 rangelist

 Input lines:

1.  Text which occurs in

    a list of points should also

    be formatted into even lines.

2.  Any text to the left of column 5

    causes a

    "justification break".

 Output lines:

1.  Text which occurs in a list of  points  should

    also  be  formatted  into even lines.  2.  Any

    text  to  the  left  of  column  5  causes   a

    "justification break".

All of the points have been run together into a single point. You can avoid this result by inserting a blank line at each point, or by doing Justify on each point individually, or by using the Indent keyword:

/justify both margin 50 indent 4 rangelist

 Input lines:

1.  Text which occurs in

    a list of points should also

    be formatted into even lines.

2.  Any text to the left of column 5

    causes a

    "justification break".

 Output lines:

1.  Text which occurs in a list of  points  should

    also be formatted into even lines.

2.  Any  text  to  the  left  of column 5 causes a

    "justification break".

Activating Indentation

Withindent activates an Indent value that you have previously configured with Set Justify Indent. Withindent allows you to settle on a single indentation for all "lists of points" without having to respecify that value on every Justify command. You merely specify Withindent when you format a list of points:

/set justify indent 4     {configure potential indentation}

/justify format 5         {this is not a list of points}

 

/just f with  9           {this is a list of points}

Justification Breaks and Formatting Commands

Justify has options to define characters that start and/or stop justification when found in column one. These options make it much easier to justify text in files which contain embedded commands and special characters for a format program (e.g., Prose, TDP, etc.). The specific characters are defined using the Start and Stop options:

/set justify stop ".+" start "` "

This command says that any line with "." or "+" in column one stops text justification and that line is not changed. Any line with "`" or " " (space) in column one ends justification of the previous paragraph and signals a new paragraph (i.e., that line is formatted as part of the next paragraph).

It's important to note that a "string" rangelist has precedence over Start and Stop characters. In other words, the latter options are ignored.

Here is an example which justifies some text from a Robelle document that consists of both text and embedded Prose formatting directives. Note that lines beginning with "." and "+" are not altered, and the line beginning with "`" properly appears as a new paragraph.

/justify start "` " stop ".+" margin 50 format all

 Input lines:

.for([ T   S:40 // l55 /   "-" pn:1 "-" /]

+    [ S   T:40 // l55 /   "-" pn:1 "-" /])

.par(f` p5 s1 u3).com  Define ` as Start of Paragraph

.ent `|1Welcome to Compare|

.beginkey compare

     Welcome to version 2.2 of Compare -- a

file comparison program for text files.

`Compare answers the question,

"How different are these two text files?"

Compare will tell you whether lines

have been added, or whether a block of

lines is now different.

 Output lines:

.for([ T   S:40 // l55 /   "-" pn:1 "-" /]

+    [ S   T:40 // l55 /   "-" pn:1 "-" /])

.par(f` p5 s1 u3).com  Define ` as Start of Paragraph

.ent `|1Welcome to Compare|

.beginkey compare

     Welcome to version 2.2 of Compare -- a file

comparison program for text files.

`Compare answers the question, "How different are

these two text files?" Compare will tell you

whether lines have been added, or whether a block

of lines is now different.


Creates a standard disc file and writes the workfile into it, including any user labels copied by the Text command. Can also update or create a "member" in a COBOL Copylib. Keep is the reverse of Text, which copies a standard disc file into a workfile that you can edit. Use Text when you need to duplicate a file. You should not need Keep very often - especially if you retain your files in Qedit format. In that case you would use New or Open to start editing the Qedit workfile, and Shut to stop editing.

KEEP [filename][,options] [ rangelist ]

(Q=no linenums)

(Defaults: rangelist=ALL, filename=last)

Keep Options

Qedit allows several options on the Keep command. Note that the comma preceding the option name is mandatory, and that spaces are not allowed before the comma or the option name.

 

Keep filename,TEMP

temporary instead of permanent file

Keep filename,UNN

unnumbered (same as KQ)

Keep filename,YES

go ahead and purge old file

Keep filename,NO

never purge an old file

Keep filename,XEQ

assign xeq access

Keep filename,NOLABELS

discard user labels

Keep filename,RELEASED

:Release security

Keep filename,IFDIRTY

only if changes made

 

Keep creates a new disc file named filename. You can combine several options on the same Keep command. The default filename is the name and domain (temporary vs. permanent) of the last Text or full Keep (i.e., it does not count if you use a rangelist or have reduced the margins with Set Left or Set Right). If filename already exists, Qedit will ask you to verify that it is okay to purge it unless you specify the ,YES or ,NO option.

Usually the file will have sequence numbers in each line (this is called numbered), but you can omit the sequence numbers with KQ, or by specifying the ,UNN option.

Keep transfers rangelist lines from the workfile to filename. The default rangelist is ALL. Warning: Qedit writes only the data within the current left and right margins, so reset the margins first if you want the entire line (e.g., Set Left; Set Right).

To save the current workfile lines as a COBOL Copylib member, put the member name in parentheses, optionally followed by the file name (default is "copylib" for which you usually have a :File command). If the member already exists, you will be asked if you want to purge the old copy. If the member does not exist, it will be created.

Examples

/text menu.schema     {make a copy of existing schema file}

QEDITSCR

/find "FUNCTION-CODE"

   14           FUNCTION-CODE,     X8;

/change "X8"X10"

   14           FUNCTION-CODE,     X10;

/keep menu.new        {create a new schema file}

    ...               {do some more changes}

/keep                 {save again with same name...}

MENU.NEW.DEV,OLD 80B FA # of records = 127

Purge existing file [No]? yes   {you must authorize purge!}

 

/s left 1;s right 50  {define margins as first 50 columns}

/kq nov99.datafile    {unnumbered with 50-byte records}

 

/k notes,UNN,TEMP,YES {unnumbered, temporary, purge old file}

/keep ,yes            {keep to last text, purging old}

 

/file copylib=copylib.pub.develop

/text (custrec)

/visual

/keep                {updates member}

/keep (custrec2)     {creates new member}

/keepq (custrec) copylib2.test.develop

Absolute File Name

If you are on a version of MPE/iX 5.0 which supports the Chdir command and the creation of new files in the POSIX namespace, you may find yourself doing the following: Text file xxx, Chdir to another directory to add from some other files, then Keep to update your original file. Keep defaults to the "absolute" name (e.g., xxx.src.util or /user/dev/lib/src/xxx). This means you can change to other directories after a Text, but still easily Keep the file back under its original name. In the past, Keep would default to the "relative" name of the Text file (e.g., xxx), saving the file in your current working directory.

Keep Only When Changes Were Made

Keep,Ifdirty only does the Keep operation if the workfile has been modified since the last Text or Keep. This can be useful in job streams that do Changes: by not Keeping files where no string changes occurred, you reduce the number of files that appear on the partial backup. To see whether your workfile is clean or dirty, do Verify Open.

Resetting File Commands

The Keep command pays attention to any :File commands that you have active. If you specify a file-close disposition like Temp or Save, and then try to text and keep the file with Qedit, the purge of the existing file cannot be carried out and Qedit will print an error message (Fclose Err: Duplicate). Qedit observes the :File equation even if you do not specify an asterisk before the file name. To avoid this confusion, :Reset the :File equation before texting or keeping the file.

/purge sj

/file sj;rec=-80,16,f,ascii;disc=200;nocctl;save

/showjob *sj

/t sj

Qeditscr

27 lines in file

/k

SJ.JIM.TECHSUP,OLD 80B FA # of records=27

Purge existing file [no]? y

Existing file apparently purged,

but still cannot save new file.

Fclose Err: Duplicate

SJ.JIM.TECHSUP,NEW 80B FA # of records=27

DUPLICATE PERMANENT FILE NAME  (FSERR 100)

 

/reset sj

/k

SJ.JIM.TECHSUP,OLD 80B FA # of records=27

Purge existing file [no]? y

27 lines saved

File Modification Timestamp

When you use the Text command on a file, Qedit stores the file's modification timestamp in the workfile. If you try to Keep the file, Qedit compares the stored timestamp with the file's current timestamp. If they are different, it means the original file has changed since you first opened it. Qedit will alert you to the difference by displaying a message similar to the following:

Warning: Original file has been modified since the initial

Text or last Keep

The file timestamp can change for a number of reasons. Here are few examples:

·         Someone else might have been working on that same file with Qedit and saved their changes before you did.

·         The file could have been restored.

·         Maybe you used the file to test a program which modified the file in some way.

Because the timestamp message is just a warning, Qedit continues its processing. It then asks for Keep confirmation. If you answer "Yes", the file will be purged and you might lose someone else's changes. Qedit will also store the new modification timestamp.

If you answer "No", you should compare the contents of the file with your workfile and decide if it is safe to Keep your changes. This is one way to compare the files:

·         Keep the workfile under a different name

·         Use our Compare bonus program to display the differences between the original file and the new version you just created

·         Look at the report and separate the lines that you changed from the ones you did not touch

·         If needed, apply changes to your copy so you are not missing anything important

By default, timestamp checking on Keep is enabled. If you want to change this setting, use the Set Keep Checktimestamp command.

If you want to erase the saved timestamp, you can use the Set Keep Name command.

Notes

You do not need to Keep your Qedit workfile before compiling. Only use Keep when you need a file as input to software that does not read Qedit files. For example, you would Keep an IMAGE schema before compiling it (although you can convert DBSCHEMA to read Qedit files; see the chapter on installation at the end of this manual).

When you Text a file and Keep it again, Qedit attempts to duplicate the original file. The form of the Keep file depends upon the current language and Set options, especially Set Keep and Set Extentsize. To see what the Keep file will look like, use Verify Keep.

Keep will retain the security of your existing file (including the :Release state and the ACDs) if you answer Yes to the "Purge old?" question. ACDs (Access Control Definitions) are a form of security that allows you to say exactly which users can do what to a file. Keep does not retain the ACDs on MPE V or when purging a remote file.


Kills any or all of the programs that are currently held.

:KILL [ @ | progfile [,entrypoint] ]

(Defaults: most recently used)

When you save a son process (such as SPOOK) after returning to Qedit, you can awaken it later. The process, and its resources, will not be released until you Exit from Qedit, even if you never use it. To terminate a son process at any time, you can use the :Kill command. You can either kill all of your sons, one specified by name, or the most-recently used one (this is the default). See also Run and Activate.

Examples

/COMMENT Assume that suprtool is already held.

/run suprtool.pub.robelle   {activate Suprtool}

Warning: Held program activated!

>get zz;list;xeq

>exit

Program Held.  Use :Activate/:Run to rerun.

/kill

Terminate:  SUPRTOOL.PUB.ROBELLE


Prints lines of the current workfile, an external file, a spool file, or a Copylib member, either on your screen or to a printer file.

LIST [$option...] [ rangelist ]

(Default: rangelist = *)

LIST [$option...] filename[,UNN] [ rangelist ]

(Default: rangelist = ALL)

(Q=no linenums, T=template, J=jumping)

If you do not specify a filename, List displays lines of the current workfile. If you do specify a filename, List displays lines from that file without Shutting your current workfile. You can refer to the "previous" file by a shorthand method, a "$".

If you specify a single line number as a rangelist and that line does not exist in the current file, Qedit's action depends on the Set List Nearest setting. If the option is Off, the default, Qedit displays a No Line warning. If the option is On, Qedit displays the nearest line. For example, if lines 100 to 120 are missing from a file, here is what would happen:

/List 100

Warning: No Line

/Set List Nearest On

/List 100

   121    This is line #121.

If you are trying to do something similar on an external file, Qedit does not display anything.

Specify filename,UNN when listing a data file which has numeric characters in the last 8 column positions and they are not valid sequence numbers.

When you list lines of your current workfile, Qedit shows only the columns within the current left and right margins, and the default rangelist is the current line (e.g., List = List *). When you List an external filename, margins are ignored and the default rangelist is ALL.

Examples

/list 5              {display line 5 only}

/listq 5/            {List-Quiet from 5 to Last}

 

/list "customer"     {all lines containing "customer"}

 

/list -5/+5          {display current vicinity}

 

/l r23gl.src         {display entire source file}

 

/l r23gl.job ]-10/   {print last 11 lines of job file}

 

/l $ "$page"(1/5)    {"$page" in column 1 of previous file}

 

/set left 55;set right 132  {set margins in wide file}

/listt all           {show template above columns}

 

/list "bob"  (upshift)      {"bob","BOB","Bob",etc.}

 

/list "@UPD@MAST@" (pat)  {strings UPD and MAST both in line}

                             {pattern matching}

$-Options

You can configure permanent options for the List command using Set List; you can also select temporary options within a specific List command. The temporary options are preceded by a dollar sign.

LIST [ $option ... ] [ filename[,UNN] ] [ rangelist ]

The temporary $-options come after the command name and before the external filename and rangelist.

Here are the $-options accepted in the List command:

 

[$lp | $lpa | $lpb | $record ]

Overrides default output to $stdlist. $lp, $lpa and $lpb send output to a file with the same name as the option. $Record sends output to LPCRT=$stdlist via Record mode.

[$DEVice filename]

The $device option sends output to the specified file name. If the file name is not equated to a particular device, the output is sent to that file name. If the file name is redirected with a file equation (file filename;dev=printer), then the output is sent to that device.

[$HEX | $OCTAL | $DECIMAL]

Numeric dump

$CHAR

Remove garbage; combines with Hex/Octal/Dec

$PCL code

LaserJet fonts and orientation

$DUPLEX

Double-sided printing on certain LaserJets

$EVEN | $ODD

Outputs even or odd number of pages

[$COLUMNS (range, ...)]

Lists only certain columns
The $columns option allows you to list only the contents of certain columns. You can specify up to four column ranges. The ranges have to be enclosed in parentheses and can be separated by commas or spaces.
A range must have a start column and, optionally, an end column. If only a start column is specified, the end column is assumed to be the same. In this case, Qedit lists only one column. For example
/List $columns (5) {lists only the contents of column 5}
/List $columns (5/10) {lists the contents of columns 5 to 10}
/List $columns (5 20/30) {lists column 5 and 20 to 30}

Column numbers must be valid for the Language of the file. For most files, the first column is 1. For COBOL-type files, the first column is 7. Column numbers must also be within the current left and right margins. The column numbers do not have to be entered in a particular order. For example, the column numbers in the first range can be greater than the column numbers in the second range. The text appears in range order (i.e., range1, range2, range3 and range4). The same column can be included in multiple column ranges. The total number of columns listed cannot exceed the absolute line length maximum (8,172 characters).
Although a template Listing is allowed with $columns, the output might not be very helpful. For example,
/LT $column (15/20)
 +....2
1 O
2 pp
3 QQQ
4 rrrr

List $include is supported with $columns, but included files are treated as if they are the same type as the main file. For example, if you include a COBOL file within a Data file, the COBOL file will start at column one.
You can specify a rangelist (e.g., a search string with $columns). Qedit first searches for the string, which can appear anywhere on the line, then applies the $columns specification.

$DOUBLE

Double space the listing (or $DBL)

$SHIFT

Shift the listing four spaces to the right

[$RIGHTBY spaces]

Shift the listing to the right by the number of spaces
The $rightby option works like the $shift option. It allows you to shift the printed output to the right. The $shift option shifts the output by four spaces. The $rightby option allows you to specify the number of spaces by which the output is shifted. This number can be between 1 and 30.
/List $shift LP {shifts output by four spaces}
/List $rightby 4 LP {also shifts output by four spaces}
/List $rightby 20 LP {shifts output by 20 spaces}

$INCLUDE

List/search $include files as well

$USE

List/search usefiles as well

$COPY

List/search COBOL Copylib files as well

$PAGE [ ON|OFF ]

Override Set List Page option

$LINES count

Override Set List Lines (per page)

$PRE | $POST

Override pre- or post-spacing (default)

$SKIP | $NOSKIP

Override skip (default) or noskip on perf

 

Here is an example that uses three of the $-options:

/list $lpa $double $shift all

This command would list all of the current file to the LPA with double spacing, and the listing would be shifted four spaces to the right. The file LPA defaults to Dev=LPA, but you can use :file lpa;dev=serialp to redirect it.

When listing an external file, the $-options must come before the file name:

/list $hex $char filename     {hex-char dump of file}

Include Files

Normally, Qedit only searches the current file for a string. If you specify the $include keyword, however, Qedit will also search the $include files for the string.

/list $include "global_variable"

The lines that specify Include files must begin with either "$", "#", "!", or ".". In SPL programs, an exclamation point indicates that the rest of the line should be treated as a comment. So, if a line starts with an exclamation point followed by the word Include, Qedit also assumes this to be a comment and not an actual Include statement.

The $include command must be spelled out in full, and it can be indented from the prefix character ($, #, etc.). The prefix character can be in any column as long as it is preceded by spaces only. Even though Qedit allows prefix indentation, other programs such as compilers might require prefixes to be in specific columns e.g. column 1.

So, as far as Qedit is concerned, the following examples are valid Include source lines:

$include 'globals.source'

    $include constant.srcinc

    $    include headers

#include <strings.h>

#include "parser/bnf.c"

!   include somefile

.include    chapter1.book

You cannot combine the $use and $include options.

Usefiles

The $use option is very similar to the $include option. If you specify the $use keyword, Qedit will also search any usefiles for a string. Usefiles are commonly used in PowerHouse source code, Qedit and Suprtool command files, and jobs streams that run Qedit and Suprtool.

/list $use "data.def"

The lines that contain the "use" directive must have the word "use" as the first word in the line. Leading blanks are allowed. Everything after the word "use" is assumed to be a file name.

You cannot combine the $use and $include options.

COBOL Copylib

The $copy option is very similar to the $include and $use options. This option works with files of Language COBOL, COBX or COBFREE. It does not have any effect on files with other languages.

If you specify the $copy keyword, Qedit scans all the lines in the rangelist for the word Copy anywhere in columns 8 to 72 (columns 1 to 256 for COBFREE files). Qedit assumes the next word on the line is the member name. It then looks for an In or Of clause. If there is one, Qedit uses the next word as the library name. If there is no In and Of clauses, the library name defaults to Copylib.

Qedit will also search any COBOL Copylib files for a string.

/list $copy 9/10           {list all Copylib members found}

                           {in lines 9 through 10}

/list $copy "CUSTREC"      {list all lines containing the string}

                           {also scans Copylib members}

You cannot combine $copy with $use and $include options.

$Device Option

The new $device option is very similar to the $lp, $lpa, and $lpb keywords.

/list $device printer @

The above command opens a file called Printer and sends the list output to it. To redirect the output from the List command to a printer, you must specify a file equation to a valid device.

:file printer;dev=laser

/list $device printer

If both the $device and $lp keywords are used, the $device takes precedence.

Configuring Printers

By using :File commands in your Qeditmgr file, you can define LP, LPA and LPB as three different printers on your system. The default device class is LP, if no file equation is specified.

:file lp;dev=lp

:file lpa;dev=serialp

:file lpb;dev=33

Merging Options

The $-options in the List command are merged with the Set List options, except that Set List Record ON applies only to the file LP, not LPA and LPB. The $-options can be combined wherever they make sense; they can be used with Jumping, Quiet and Template, and can work on the current workfile or an external file. $-Options may be shortened (e.g., $h = $hex).

Interrupting a Listing

Press the Control-S key to "pause" the listing for review. Then, press Control-Q to resume the listing. On newer HP terminals, the Stop key pauses a listing until you press Stop again. To stop the List command, press the Control-Y key.

Listing External Files

With the List command, you can look at any file on a system to which you have read access security.

/list catalog.pub.sys

Qedit studies the file and determines whether it has sequence numbers or not. If you ask for a rangelist of lines, Qedit implicitly numbers a file without numbers. It starts at line 1.0 and adds the current Set Increment value. If the file has sequence numbers, Qedit uses them, unless it finds illegal numbers or numbers out of sequence. It then prints the following message:

Error: line number out of sequence (001200) - renumbering the rest

The string in parentheses is the incorrect line number. You should make sure it contains numeric digits only and that it is greater than the number on the previous line. To check this information, you should text the file using the Unnumbered option.

After reporting the information, Qedit then assigns new numbers to the lines, starting with the last valid number and adding the current increment.

Qedit uses this shorthand character to refer to the most recent external file name: "$". For example,

/list abc.source "$page"(1/5)

/list $ 500/600

Because Qedit uses "LP" as a reserved keyword in this command, you must use a :File command if you want to list an external file named LP.

/:file xyzzy = lp

/list xyzzy

Listing Temp Files

Normally the List command looks for either a temporary file or a permanent file with the specified name. To list only a temporary file, append the Temp keyword to the file name:

/list output,temp

You can append more than one keyword to the file name:

/list filename,temp,unn

Listing Output Spool Files (NM)

On MPE XL 2.1 and later, spool files are now regular files that can be listed in Qedit. To make this easier, Qedit converts the spool file numeric format (i.e., #o1234) into an MPE file name for you. You can omit the "o" if you like.

/showout

/list #o1234

/lqj #456

Pre- Versus Post-Spacing and Skip-on-Perf

If you Text a spool file into Qedit and then reprint it using LQ, you may find that the file has switched from pre-spacing to post-spacing or from noskip-on-perforation to skip-on-perf. These are the defaults, and the information to override them is sometimes hidden in the spool file where Qedit cannot find it. Similar problems may occur when editing CCTL disc files.

List has the $pre, $post, $skip and $noskip options to deal with these problems.

/listq $pre $lp all         {pre-spacing on LP}

/listq $noskip $rec all     {on attached printer}

/listq $pre all             {on $stdlist}

A program selects these printer options by using a carriage control code. The codes can be specified in two ways: either through the Fwrite intrinsic, or the Fcontrol intrinsic (in this case they do not show up when Qedit Freads the spool file). Here are the four CCTL codes:

 

 

Char

Dec

Octal

Hex

Post-spacing

" "

64

%100

$40

Pre-spacing

"A"

65

%101

$41

Skip-on-perf

"B"

66

%102

$42

Noskip-on-perf

"C"

67

%103

$43

 

Listing Copylib Members

To display a member of your Copylib file, you just put the member name in parentheses. You don't need to mention the name of the Copylib itself if you have a :File command for "copylib". Otherwise just put the file name after the member name. For example,

/file copylib=copylib.pub.develop

/list (custrec)

/list (custrec) copylib.test.develop

To list the member names in the Copylib, instead of the members themselves, specify a pattern instead of an actual member name.

/list (b@)      {names starting with "b"}

/list (@)       {all the names}

Quiet Listing and CCTL

LQ means list without showing the line numbers. When you use LQ to list a file that has CCTL (carriage control), Qedit uses the first column of each line as carriage control. Thus, Qedit can reproduce application reports which were redirected from LP to Disc (using :file list = xxx, new; cctl ;dev = disc) with exactly the same spacing and paging that was used originally. Workfiles may also have CCTL (see Set Keep and Verify Keep).

Template Listing

The LT command prints a column-number template before the first line of the listing.

/lqt 5

....+....10...+....20...+....30...+....40...+....50..

    training of Qedit users is so easy that you will

Remember that the first column number in a standard COBOL source file is column 7, not column 1. For a COBFREE file, the first column is 1. In addition, if you have done Set Left and Set Right to define margins for your file, the template starts with the Left margin column and ends with the Right margin column.

/set left 20;set right 41

/lqt 5

20...+....30...+....40

it users is so easy th

Browsing or "List-Jumping"

When you add "J" to "List" it means list-jumping. This lists the lines specified, but stops every 23 lines (this pause is handy at 19.2K baud). Browse quickly throughout a file, viewing as much or as little of each section as you like. The default rangelist for ListJ is */Last, and ListJ linenum means start jumping at linenum. You can go into Browse mode quickly from Line mode by using the function keys. Press F6 to start browsing at the current line, press F5 to browse starting back a page, and press F2 to roll the screen forward a few lines before starting to browse.

At the end of each screen, ListJ prompts you for "what to do next?" and waits for your reply. If the user presses Return or F6, or types "yes", Qedit displays the next screen. If the user presses F8 or Control-Y, or types "no", Qedit stops the listing. If the user types a line number, a string, or a relative line count (e.g., -50, +5), or presses F2, F3, F4, or F5, Qedit moves to a new location within the file. When you enter any command, Qedit stops the listing, returns to Command mode, and executes the command. When you are on an HP terminal, ListJ enhances and erases the line with the "what to do next?" prompt.

You can combine ListJ with the $include option to browse through the specified files as well as their $include files. You can combine with ListJ with "Q" to display the lines without sequence numbers. Also, you can combine "ListJ" with "T" to print a column template at the top of each screen. In fact, you can combine all three options into "ListJQT" to List-Jump without line numbers, but with a column template.

The screensize can be changed from 23 lines to another number with Set List LJ nn (where nn is some number of lines from 5 to 100). If you put the command Set List QJ On in your Qeditmgr file, you can avoid seeing sequence numbers when you browse.

When List-Jumping reaches the last line of your file, it prints "End! Are you DONE? [yes]" and waits for your answer. "Yes" ends the listing, and "No" starts listing again from the beginning. Set List Endstop On disables this question; List-Jumping just prints the last line of the file and ends the LJ command.

Controlling Printer Listings

When you put "$lp" (or "$lpa" or "$lpb") in a List command, Qedit opens a file named "LP" (or "LPA" or "LPB") with the device Class "LP." The lines that would have been printed on the terminal are written to the printer file instead. At the end of the command, Qedit closes the file, which releases it for printing.

The default Qedit listing to the printer is a raw dump of your lines, with or without line numbers. It has no page breaks, no headings, no title, and no page numbers. However, you can override this default with the Set List command.

Listing to Attached Printer

To list to a printer that is attached to your terminal, use List $record. If you want all listings to $lp to go to the attached printer, do Set List Record On and then List $lp. Qedit will use Record mode on your terminal or PC to print on the attached printer. This option opens a file named LPCRT instead of LP.

If you have a LaserJet connected to your PC and are using Reflection, you will want to Set Printer-Passthru-Conv No in Reflection. Otherwise you will find that some characters are printing oddly, such as the square block printing as a plus-minus sign. If you are using Reflection for Windows, the above option may be called "Disable Printer Translation" or "Use Host Character Set." As well, you have to select "Bypass Windows Printing" and disable "Auto Form Feed."

You can combine this option with other listing options such as $PCL or $duplex. You cannot interrupt Record mode with Control-Y, but you can do a soft Reset. This unlocks the keyboard and causes the rest of the output to appear on the screen. You can then stop it with Control-Y.

LP Listings with Headings

To have Qedit do a page break every 60 lines and put a heading with a page number on each page, do List $page On $lp (or $record, $lpa, $lpb). To configure "paging" as the default, do Set List Page On. Two lines at the top of each page are used as a heading. The first line contains the page number, the file name (or the last Text file name in the case of Qeditscr), and the time of the listing, and the second line is blank.

In this mode, Qedit also looks for $title, $page, #pragma page, and #pragma title commands in your file and uses them to create page breaks. The optional string parameter of these commands replaces the date and time in the page heading (e.g., $page "Monthly Staff Review"). A $page or $title command without a string clears the title area of the heading. The only exception to this processing is an LQ of a CCTL file; in this case, the carriage control in column one of the file determines the format of the printer listing, and $page commands are ignored.

To vary the number of lines per page, do List $lines nn, or use Set List Lines nn for a permanent override, where nn is a value between 1 and 256. (Assumes Set List Page On.).

/set list page on lines 59

To print the heading only on the first page, use $lines 0. This causes continuous printing with no page ejects.

/list $lp $lines 0 all     {ignores $page too}

To perform continuous printing with no automatic page ejects but skip to a new page on $Page directives, use $lines 999.

/list $lp $lines 999 all     {skips to a new page on $page only}

To drop the file name from the page heading, do Set List Name Off. (Assumes Set List Page On.)

/set list page on name off

To drop the page numbers from each page, do Set List Num Off. (Assumes Set List Page On.)

/set list page on name off num off

To drop the title from the heading, do Set List Title Off. (Assumes Set List Page On.)

/set list page on title off

To drop the two-line heading from each page while still doing page breaks, use Set List to disable the three components of the heading:

/set list page on name off num off title off

Getting an Even or Odd Number of Pages

There are times when the number of printed pages is important. For example, you could have a printer that is always loaded with pre-printed forms that come in pairs (e.g., Page 1 of 2 and Page 2 of 2) or the paper is folded in certain ways so that a report is easier to tear up and insert into a binder. In both examples, sending a report with an odd number of pages would cause the next output to be on a wrong page.

To prevent this from happening, you can now use the $even or $odd options on the List command and ask Qedit to "round up" the number of pages. The $even option ensures that the output has an even number of pages. Similarly, the $odd option ensures there is an odd number of pages by sending an extra page eject sequence before closing the output file.

These even and odd options are mutually exclusive (i.e., they cannot be both enabled at the same time). If you try use them both on the same command, Qedit uses the last one in the sequence. For example, you can type

/List $even $odd $lpa myfile

Qedit does not see this as an error and uses the $odd option, ignoring $even.

These options only make sense if you are sending the list to a printer, either attached or spooled. They have no effect when listing the file to the screen. For this reason, you have to specify a destination printer using $lp, $lpa, $lpb, $record or $device.

You can also use one of these options as the default by using the Set List command. Specifying a $-option on the List command overrides the Set value. There is currently no way to completely ignore the Set options. If you want both options to be disabled, you have to issue

/Set List Even Off Odd Off

 prior to the List command.

Double-Spaced Listings

When listing to LP, you can force the result to be double spaced with List $double. This feature can be combined with most of the other features of List, including LT, LQ, and Set List Page On. To make all printer listings double spaced, do Set List Dbl On. LQ on a CCTL file disables the Double option because the CCTL codes in the file control the spacing on the listing.

LaserJet Listings

Qedit has two special options for HP LaserJets: $duplex and $PCL. Duplex means double-sided printing, and PCL means Printer Command Language, which is used to select fonts, spacing, and orientation.

$Duplex for Two-Sided Printing. Some LaserJets can print on both sides of the paper; use List $duplex to enable this option.

/list $lp $duplex all

PCL = Printer Command Language. All LaserJets have several sizes of character fonts and can print in either landscape or portrait orientation. To help you take advantage of these features, Qedit has a number of PCL codes that can do all the work for you. PCL stands for Printer Command Language, which is the HP standard for printers. To specify a LaserJet option for a single listing, use List $PCL; to configure all listings, use Set List PCL. To disable the special PCL option, use PCL 0. Get a quick on-line listing of the PCL options with

/hq set,list

Changing Fonts and Orientation

Landscape-Tiny: PCL 1. To list to the LaserJet in the tiny font that prints across the paper sideways (i.e., 16.67 pitch, landscape), use PCL 1. The number of columns is automatically increased; you do not need to do any special Rec= on your :File command.

/:file lp;dev=serialp

/list $lp $pcl 1 all

Landscape-Regular: PCL 2. To list with the regular Courier font in landscape orientation, use PCL 2. Again, there is no need to specify Rec=.

The Standard: PCL 3. The normal default for LaserJet output is portrait orientation (across the narrow side) with the Courier font. However, once you insert a font cartridge into your LaserJet, it may select one of the cartridge fonts as the default instead of Courier. PCL 3 allows you to select the standard Courier font, even if another font cartridge is installed.

Portrait-Tiny: PCL 4. Some LaserJets provide the tiny "Line printer" font in portrait orientation as well as landscape orientation. PCL 4 selects this option.

A4 Special: PCL 5. To print 80 columns, instead of 77, across A4 paper using the standard Courier typeface, try PCL 5. This tightens the spacing between characters.

Legal-Landscape-Tiny: PCL 6. To print tiny letters in landscape orientation on legal-size paper, use PCL 6.

You can combine PCL 1, 2, 3, 4, 5, and 6 with Page On and Off, with Lines 0, with LQ, with $DBL, with $record, and with $duplex.

Two-Column Listings

If your LaserJet supports "Line printer" font in landscape orientation, you can print listings across the page with two columns of text side by side.

/list $lp $pcl 10 all  {two-column listing format}

/lq $rec $pcl 10 1/200

If you have a legal-size paper tray, you can use PCL 11 to print two wide columns of 110 characters each on a single piece of paper.

A4-Size Paper

Most of the PCL options, with the exception of PCL 5, were designed and tested with North American letter-size paper. PCL 5 is especially for A4 paper; it reduces the horizontal spacing between characters so that 80 columns of Courier output can fit on a single line. In addition, if you add 2000 to a PCL code, Qedit adjusts the number of rows and columns for that option to match A4 paper. For example, to print two-up landscape on A4 paper, use PCL 2010 instead of PCL 10.

In general, selecting A4 paper gives you more space along the long dimension of the paper and less space along the short dimension. If you are happy with the way letter-size rows and columns work on A4 paper, simply do not add 2000 to the PCL code. If for some reason you want more columns than provided by Qedit (perhaps you are using a PCL-compatible system printer with wider paper), you can override the size by using a :File command with the Rec= parameter, as in :file lp;dev=syslp;rec=-220.

Summary of Qedit PCL Codes

 

PCL

L/P

Font

A4 Rows

A4 Columns

Letter Rows

Letter Columns

Notes

1

L

lp

58

188

60

175

 

2

L

courier

43

110

45

100

 

3

P

courier

64

77

60

80

"standard"

4

P

lp

85

128

80

132

 

5

P

courier

64

80

60

80

A4-squeeze

6

L

lp

60

223

60

223

legal-size*

10

L

lp

58

95

60

87

two columns

11

L

lp

60

110

60

110

2-up legal*

 

L/P mean landscape or portrait orientation.

* Note: PCL 6 and 11 were designed to print on North American legal-size paper and will select that size. However, you can see what happens with A4 paper by using 2006 and 2011. Some people have found this useful.

Roman-8 vs. ASCII

The PCL option requests a Roman-8 character set, but some combination font cartridges only supply the ASCII character set (half as many characters means twice as many fonts in a single cartridge). If you ask for landscape Line printer and get landscape Courier instead, your Line printer font probably has the ASCII character set instead of the Roman-8 character set. To request an ASCII font, add 1,000 to the PCL code. For example, if you have a Super Cartridge (55 fonts in one!), use PCL 1001, 1004, 1006, 1010 and 1011. To select both ASCII and A4 paper, add 3000.

Multiple Copies

To produce multiple copies of a listing to a spooled printer, use a :File command. For example, use these commands to produce three copies:

/:file lp;dev=lp,,3

/list $lp all

The :File command remains in effect until you enter another :File command or :Reset LP or :BYE.

Redirecting Output to Disc

You can also use :File commands to direct output to a disc file:

/:file lpb = discfile, old; dev = disc

/:build discfile; rec=-80,16,f,ascii

/list $lpb 100/200


The :Listredo command displays any of the previous 1,000 commands.

                LISTREDO            [ start [ / stop ] ]   [;ABS] [;OUT=file]

                                                [ string ] [;REL]

                                [ ALL | @ ]             [;UNN]

(Default: display previous 20 commands)

(BJ, F7 and ,, are short for Listredo)

Commands are numbered sequentially from 1 as entered and the last 1,000 are retained. You can display a single command, a range of commands, all 1,000, or all the commands whose name matches the string. You can print the commands with ABSolute line numbers (the default), RELative line numbers (-5/-4), or UNNumbered. You can write the commands to your terminal or OUT to a temporary file. If you want to redo any of these commands, see :Do, :Redo, and Before.

Notes

Examples

/listredo 5

/listredo 5/10

/listredo help           {print all Help commands}

/bj                      {historical shorthand!}

/listredo -10            {print last ten commands}

/listredo ALL            {print entire redo stack}

/listredo purge          {print all Purge commands}

/listredo purge xx       {print all "purge xx" commands}

/listredo @purge         {print all with "purge" anywhere}

/listredo @;rel          {print all, relative numbers}

/listredo 1/10;out=*lp   {dump commands to printer}

/listredo @;unn;out=save {write commands to a file}

Notes

The :Listredo command can be abbreviated to ",," as in MPEX, or to BJ, or can be invoked by the F7 function key. Using F7 to invoke Listredo only works in Line mode, not Visual mode. You cannot use ";" to combine commands on the same line.


Displays the complete Undo change log of commands that modified text, starting with the most recent and working backward.

LISTUNDO

Listundo shows the complete Undo change log, including each command, the number of lines updated, deleted, added, or renumbered by that command, and the text lines. Text for deleted lines is preceded by an underscore ("_") as in the Delete command, and the "before" value of lines that were updated has a Greater Than ">".

Commands are printed in reverse order, with the most recent command first. This is the command that would undone by the next Undo command. To stop the Listundo report, use Control-Y.

Examples

/listundo


Sorts a range of lines.

LSORT range [ KEYS keylist ]

LSORT string range [ KEYS keylist ]

(Q=no display)

(Default: by entire line)

The simplest Lsort command just specifies a range of lines to be sorted and no other parameters. This means to use the entire line as the key and sort the lines into ascending order, printing them once sorted.

To stop Lsort from printing the sorted lines, use LsortQ.

Parameters

To sort by some other key fields in the lines (from one to four are supported) or to sort the lines in Descending Order, you need to specify the KEYS keylist parameters. The keylist consists of one to four keys separated by spaces or commas, with a key consisting of either a column range or a starting column and length:

 column , length [DESC]

 column / column [DESC]

Ascending Order is assumed by default, but you may specify DESC to sort this key in Descending Order.

Examples

/lsort all           {sort entire file}

/lsortq all          {sort without printing}

/lsort 10/33         {sort some lines only}

/lsort 30/last keys 10,5            {col 10 through 14}

/lsort zz keys 10/20                {col 10 through 20}

/lsort 20/last keys 1,10 20,5,desc  {two keys}


Merges an external file into the current workfile by line number. Use Merge to apply source-code "changes-files" containing new and revised text, that are distributed by some application vendors.

MERGE filename [ (rangelist) ]

(Q=no display, J=Justified)

(Default: rangelist: ALL)

MergeQ suppresses printing of the merged lines.

The optional rangelist specifies a subset of the external file to merge into the current file.

Examples

/text master.src  {start with the master file}

/merge changes    {update changed lines, add new}

Notes

To make your own "merge file", create a file that contains edits to be applied to your current workfile. Mark the lines of text that will replace existing lines in your workfile, with the corresponding line numbers. Give new line numbers to any completely new lines of text to be added to your workfile. To delete lines in your workfile, use the $edit Void command of the MPE compilers in the merge file. $Edit Void removes the line number specified in the command and, optionally, lines up to and including a Void= line number. Warning: the Void= parameter cannot accept a decimal point so, for example, you must enter Qedit line 60.1 as 60100. To delete from line 55 to 60.1, you would use the following:

55     $edit void=60100

Justified

The default is to replace existing lines with the corresponding line from the external file. The Justified option appends the corresponding line from the external file. Text is appended immediately after the last non-blank character if Set Work Trailingspaces[Help27]  is disabled. If Trailinspaces is enabled, text is appended immediately after the last significant trailing space. If the resulting merged line is too long for the current length, the merged line is truncated. Let's say the current workfile contains:

abc

def

ghj

and the external file contains:

1111

2222

3333

A MergeJ would result in:

abc1111

def2222

ghj3333

If the maximum length was 5, the resulting file would be:

/mergej myfile

    1     11111

Warning:  Result line will be too long.  Truncating merged text.

    2     22222

Warning:  Result line will be too long.  Truncating merged text.

    3     33333

Warning:  Result line will be too long.  Truncating merged text.

3 lines merged

/l all

    1     abc11

    2     def22

    3     ghj33


Editing characters within lines using either Control codes (default Set Mod Robelle), D-I-R-U edits (Set Mod HP), or Control codes with visible feedback (Set Mod Qzmod).

MODIFY rangelist

(Q=no linenum, T=template)

(Default: rangelist = *)

By default, Modify displays the first line and puts the cursor under the first column. You enter an "edit-line" to specify a changes. You use spaces to move the cursor under the word you want to change, then type new characters to replace those in the columns above. For example:

/modify 5

   5    Over 2000 computers use Suprtool.  {prints line}

              750                          {you edit it}

   5    Over 2750 computers use Suprtool.  {prints new line}

        <Return>                           {end Modify}

Each time you press Return, Modify applies your changes to the line and prints the new result. This cycle continues until you enter only a Return (no more edits).

You use nonprinting Control codes for editing, such as Control-D to delete. For visual feedback, do Set Mod Qzmod, which puts your cursor right on top of the line and responds to each Control code by revising the image on the screen (i.e., Control-D actually makes the character disappear from the screen). If you would prefer to use MPE-style edits (D-I-R-U) instead of Control Codes, do Set Mod HP to reconfigure Modify.

To force the line number onto a separate line, use Set Mod Prompt OFF.

Examples

/modify 5/         {modify from line 5 until ^Y or end}

/find "corelate";m {find spelling error and modify line}

 

/mod "q_flag"      {modify all lines with "q_flag"}

Getting into Modify Mode

There are other commands that invoke Modify mode in Qedit:

·         Change, when a line overflows or you use CJ.

·         Add, when you use the auto modify character from Set Zip.

·         Before, so that you can revise and redo a previous command.

·         Redo, also enables you to revise and redo a previous command.

Edit Functions of Modify

Here are the edit functions of Modify and their Control codes, which may be changed with the Set Modify command.

 

Function

Key

Purpose

Overwrite

Control-O

Replace characters (default).

Delete

Control-D

Delete characters.

Before

Control-B

Insert characters before a column.

Append

Control-A

Add characters to end of the line.

Divide

Control-V

Divide line in two at this column.

Goof

Control-G

Restart Modify with original line.

Terminate

Control-T

End this edit so you can do another.

Lengthen

Control-L

Same as Append (Control-A).

Insert

Control-^

Same as Before (Control-B).

 

Advanced

You create Control codes by holding down the Control key while pressing the other key. Most Control codes are invisible and do not move the cursor. In the user manual, the symbol (^) as a prefix stands for the Control key (^-D for Control-D).

Some functions combine two of the Control codes: pressing ^-T then ^-V in the first column of a line splices two lines together (and deletes the second line if it's emptied). Actions not restricted to column 1 may be performed at any point on the line.

 

Function

Key

Col.

Purpose

Splice

^T ^V

1

Fills current line from next line.

Insert Line

^A ^V

1

Adds a blank line before current one.

Insert Line

^A ^V

 

Adds a blank line after current line.

Delete Last

^A ^D

 

Spaces remove characters at end of line.

Replace End

^A ^O

 

Replaces from end of line (overwrites).

Delete Line

^T ^D

1

Deletes current line.

 

Overwriting Characters

To overwrite characters in a line, type the new characters underneath the ones to be replaced. There is no need to type a control character; "overwrite" is the default edit function. Once you are in Overwrite mode, you can also use the Space bar to erase the columns that you move through. If you have not yet typed any characters, the Space bar just moves your column position to the right one place. You can get into Overwrite mode at any time while in modify by pressing Control-O. Terminate overwrite mode and go into space- transparency mode by typing Control-T.

Start Over Editing a Line

To correct a Modify mistake, enter the Goof control code (Control-G) and press Return. Qedit restores the line to its original contents and restarts the Modify cycle. Control-G does not undo Splits and Splices.

Doing Several Edits in One Line

You can do more than one edit operation in one edit-line if each edit is clearly separated from the preceding and following ones. When the edits are at different ends of the line, you must Terminate the first function so that you can move the cursor right to the next column. The Terminate control code (Control-T) provides this capability.

The following illustrates where to place your control codes (^ stands for the Control key), even though they will not appear on your screen. The first example capitalizes the "r" in "return", then replaces "in error" with "by mistake", which requires inserting the letters "ke." The second example inserts the word "Goof" and a space at the start of the line, and deletes the last two words at the end of the sentence, adding a final period.

/m 13

   13   a return. If you do this in error,      {displays line}

          R                      by mistake     {^codes are: }

 <spaces> R<^T, spaces>          by mista<^B>ke<Return>

   13   a Return. If you do this by mistake,    {redisplays}

 

/m+1

   14   control code restores the line for you. {displays line}

        Goof                          .         {^codes are: }

    <^B>Goof <^T, spaces>             .<^D, Return>

   14   Goof control code restores the line.    {redisplays}

Deleting Characters

To delete characters from the line, starting with the current column position, enter the Delete control code (Control-D). Then space to the right the number of columns to be deleted. Any remaining characters in the line are left-shifted to fill in the deleted columns.

In all cases, the columns deleted are those immediately above the cursor, regardless of what other functions have been performed previously on the same line. The Delete function is stopped by the first nonblank character, either Return, a printing character to switch back into Overwrite function, or another control code.

Erasing the Line

To erase from the current column to the end of the line, enter the Delete control code, followed by a Return. If you do this by mistake, the Goof control code restores the line for you.

Inserting Characters

To insert characters in the line before the current column position, enter the Before control code (Control-B). Then type the characters to be inserted. The existing characters starting in the insert column are right-shifted to make room for the new characters.

On the operator's console of certain HP e3000 models,

the Control-B character puts the terminal into "maintenance" mode. In these cases, use Control-^ instead. If you do press Control-B on the console accidentally, type "CO" on a Series 800 or 900. On a Micro3000, type "RUN".

Adding Characters to the End of a Line

To add characters to the end of the line after the last nonblank character in the line, enter the Append control code (Control-A). Then type the characters to be added. This function is independent of the current column position.

Dividing a Line into Two Lines

The Divide control code (Control-V) splits the current line into two lines at the current column position. If a line number is available, Qedit moves all characters from the current column to the end of the line to a new line that is added after the current line. The Goof function recalls the original contents of the line, but does not delete the new line (neither does Control-Y). See also Divide command.

Splicing Two Lines Together

To splice two lines together, you must be on the first column of the first line you wish to splice. Type Control-T, then Control-V, and quick as a wink, all the characters from the second line are appended to the end of your current one. Qedit moves only as many characters as will fit. If all the characters are moved, the second line, now empty, is deleted. See also the Glue command.

Editing Lines with More Than 80 Columns

To modify long lines (i.e., more than 80 columns), use Set Left and Set Right to define a slice through the lines.

/set left 55

/mqt *            {quiet, with template}

+....60...+....70...+....80...+....90...+....100..+....

ubsequent Sales Follow-up - Completion Ratio Report

Or use Set Modify Qzmodify, it handles long lines without the need to set margins.

Qzmodify: WYSIWYG

You may want to try Set Modify Qzmodify to replace the normal Qedit modify with a "visual" modify (What You See Is What You Get). Qzmodify uses the same Control codes, plus many extensions, but Qzmodify does single-character reads. This allows it to respond immediately and visually to each keystroke, but means that the performance is unacceptable over NS, packet-switching LANs, and the DTC. Once in Qzmodify, type Control-Q for a list of commands.

How to Edit in Qzmodify

In Qzmodify, "what you see is what you get". The cursor rests on the same line as the text you are editing. If you press any printable key (ASCII code 32 or greater), that key either replaces the character the cursor was on, or (if Insert mode is on) inserts the key before that character, moving the rest of line to the right by one character.

When you initially enter Qzmodify you are in Transparent mode--here, a blank simply causes the cursor to move one space to the right. Pressing any other printable character immediately terminates Transparent mode and puts you in Overwrite mode, so the character replaces the one the cursor is on. The three basic modes are:

 

 Mode

To enter

To exit

 transparent

^T

any printable char, ^B, ^O, or ^X

 overwrite

^O

^T, ^B, or ^X

 insert

^B or ^^

^T, ^O, or ^X

 

Qzmodify will not allow you to create a line longer than a maximum specified by the calling program, nor can you accidentally "lose" characters off the right edge when using Insert mode ... Qzmodify beeps when you try to do something illegal. To edit Roman-8 characters, use Set Editinput Extend ON.

Editing Commands

Qzmodify has an extensive set of commands, all of which are invoked via control characters. In this documentation, the symbol ^ means that the following character is a control character (e.g., ^G is control-G). Control characters may be entered as lowercase or uppercase letters (i.e: ^g and ^G are identical).

 

Char Mnemonic

Description

^A append

Go to end-of-line. Moves the cursor to just after the last character on the line. If the line is already at the maximum length, the cursor is placed at the last character.

^B before

Turn on Insert mode. Turns off Overwrite mode. If you enter a character while in Insert mode, it will be put Before the character the cursor is on, and the rest of the line will move one to the right.

^^ before

Control up-arrow...synonym of ^B. Use ^^ instead of ^B if you are on a system console!

^C case

Change case of current character. If the current character is a lowercase letter, it will be changed to an uppercase letter and vice versa.

^D delete

Delete character. Pressing ^D will cause the character under the cursor to be deleted, and the rest of the line to be moved one space to the left.

^L^D delete end

If the cursor is just past the last character in the line, (i.e., you just did a ^L or ^A), then the ^D will delete the last character of the line.

^E erase

Erase to end of line. This will erase all of the text from the cursor to the end of the line.

^F<c> find

Find next occurrence of character <c>. The cursor will be moved to the next occurrence of the character <c> to the right of the cursor. If <c> is not found, you will hear a beep.

^F<n><c>

Find nth occurrence of <c> where 1<=n<=8.

^G goof

Undo all current modifications. Restores the line of text to its original form. Note: ^V, ^K, ^T^D, and ^T^V cannot be undone.

^H backspace

Move back one character (nondestructive).

^I tab

Skip ahead to the next tab stop.

^J justify

Deletes blanks from the cursor to the first nonblank (does not delete that character).

^K add

Requests Qedit to add a line after the current line. The current line will then be redisplayed for editing and you will get to edit the new line.

^L lengthen

Go to end-of-line...synonym of ^A. Use ^L instead of ^A if you are on a Type Ahead Engine (TAE).

^M return

Marks the end of editing a line. Returns the modified line to Qedit. Note that ^M is the same as Return.

^O overwrite

Initiates Overwrite mode and turns off Insert mode (^B). In Overwrite mode, if you enter a character, it will replace the one on the screen.

^P<#><dir>

Moves up or down some number of lines of text. For example, ^P3- moves back three lines.

^Q query

Displays list of Qzmodify functions.

^S<c> scan

Find previous occurrence of <c>. The cursor will be moved to the first occurrence of <c> to the left of the current cursor position. If <c> is not found, you will hear a beep.

^S<n><c>

Find nth occurrence of <c> where 1<=n<=8.

^T Transparent

Terminates Insert mode and Overwrite mode. After ^T, if you type blanks, the cursor simply moves right one space without affecting the text. Transparent mode is always turned off automatically whenever a nonblank printable character is entered, then Overwrite mode is turned on.

^T^D delete

If done at column one, this deletes the entire line.

^T^V splice

If done at column one, this will join the next line to the end of the current line and display the spliced line for editing. If not a column one, then is the same as ^V.

^U jUmpback

Move back to the previous tab stop. This is the opposite to ^I. As an aid to remembering them, ^I is the same as pressing the tab key, and ^U is just to the left of ^I on the keyboard.

^V split

Split the current line (at the cursor) into two lines and modify both of them. Note that ^Y restores the text if you decide not to make the change, but you have to manually remove the second split-off line.

^X eXamine

Examine (redisplay) the current line.

^Y abort

Terminates modify without changing the current line.

^W Wordproc

Shifts into "word-processor" mode. In word-processor mode, the next control character is used to select a function. The functions are:

 ^W^C

Compress multiple blank spaces to single blank spaces.

 ^W^D

Delete Word. Deletes from the cursor to the next blank, and then any following blanks up to (but not including) the next nonblank.

 ^W^H

Toggles a flag that remembers if you have an HP 110 (or an HP 2640). The flag is needed because the HP 110 knows only a subset of the "standard" HP 26xx escape sequences, and some of them incorrectly!

 ^W^L

Draws a ruled "line"; similar to the ListT command.

 ^W^N

Toggles Numbered mode. A line-number prefix will be displayed in front of a line of text only if both of the following are true:- line numbers have been requested (either via a Modify command from Qedit or via ^W^N);- the line number was passed to Qzmodify by Qedit (i.e., you did an Modify command, not an ModifyQ command)

 ^W<c>^D

Delete all characters from the cursor up to, but not including, character <c>. Note: <c> must be a printable ASCII character (character code > 31). If the cursor is currently on the same <c>, it is deleted immediately before looking for the first <c>. If <c> is not found, nothing is deleted.

 ^W^P<c>

Put the character into the text. This is useful when you want to put a control character into the text. All nonprintable characters will be displayed as periods (.), so they will take up one space on the line.

 ^W^S^D

Downshift all letters from the cursor to end-of-line.

 ^W^S^U

Upshift all letters from the cursor to end-of-line.

 ^W^S^T

Reverse the case (e.g., "a" becomes "A" and "A" becomes "a") of all letters from the cursor to end-of-line.

 ^W^T

Toggles the Type Ahead Engine (if you have one) through three states: disabled, enabled, ignored.

 ^W^V

Prints the version ID of Qzmodify.

 ^W?

Display the ASCII character code for the character that the cursor is on.

 ^W$<hh>

Replace the character at the current column position with the ASCII character whose hexadecimal value is <hh>.

 

Symbols Used in Qzmodify Command List

<c> is any single character. Qzmodify will search for this character. If <c> is ^W, the search will be for the next word (words are anything delimited by blanks) instead of for a single character.

<#> is zero or more digits. For example, ^P12+ would mean move forward 12 lines. ^P3- would move back three lines.

<n> is one of: ^A, ^B, ..., ^H and is interpreted as the number 1, 2, ..., 8 respectively.

<dir> is a "-" to move "back", or a "+" to move "forward".

<hh> is any pair of hexadecimal digits.

Note: When modifying a line longer than 79 characters, some commands (e.g.: ^D, ^B, ^E) will not update any line of the screen display other than the one you are on. Whenever you want to see an accurate display of your text line, press ^X to refresh the display. This limitation could be fixed, but only at the cost of slowing down response time while editing these longer lines.

Note: You cannot use the special keys on an HP terminal (e.g.: cursor keys, insert char, delete char, clear) because they are designed to either send no characters to the computer when they are pressed or two characters ... and both of these choices cause difficult problems on an HP e3000 without a Type Ahead Engine. Thus, these keys should not be used. If you use them by accident, a ^X will refresh the display of the line you are editing.

Qzmodify with a Type Ahead Engine

The Type Ahead Engine (TAE) from Telamon can be in one of three states from the Qzmodify viewpoint: disabled, enabled, or ignored. Each is defined below.

Ignored. Qzmodify will not do anything to either encourage the use, or discourage the use, of the TAE. This is usually the initial state (see below).

Enabled. Qzmodify will place the TAE in single-character mode at entry, and restore it to Line mode at exit. This means that the HP3000 won't lose typed ahead input anymore, and that the special keys (e.g., cursor keys) will work nicely.

Disabled. Qzmodify will disable typeahead (by sending ^A^V to the TAE) at entry, and enable it at exit. In this mode, the TAE is effectively taken out of the "circuit".

With Qedit, you configure TAE-treatment as part of the Set Modify Qzmodify command:

Set Mod Qzmodify     {ignore the TAE}

Set Mod Qzmod TAEOFF {TAE exists, disable it}

 

Set Mod Qzmod TAE    {TAE exists, enable it}

When the TAE is present and enabled, you can use these extra commands:

 

^W^T

Toggles the Type Ahead Engine through three states: disabled, enabled, ignored.

leftarrow

The HP26xx left-arrow key will move the cursor 1 space to the left.

rightarrow

The HP26xx right-arrow key will move the cursor 1 space to the right.

up arrow

Move up to the prior line of text, leaving cursor in the same column. The terminal screen is scrolled DOWN, so the line you were just editing is moved down 1.

down arrow

Move down to the next line of text, leaving cursor in the same column. The terminal screen is scrolled UP, so the line you were just editing is moved up 1.

delete char

Deletes the character under the cursor (like ^D).

insert char

Turns on Insert mode (like ^B).

insert line

Asks Qedit to add a new line after the current line.

delete line

Asks Qedit to delete the current line.

^leftarrow

Moves cursor LEFT to the blank just after the nearest "word" on the left of the cursor. Valid only if a Type Ahead Engine is present and enabled. Only available on HP264x terminals.

^rightarrow

Moves cursor RIGHT until it reaches the start of the next "word" (will not move past current end of text.) Valid only if a Type Ahead Engine is present and enabled. Only available on HP264x terminals.

 

Hpmodify: No Control Characters

Set Modify Hpmodify replaces Qedit's standard Modify in all places with MPE-style editing (D for delete, I for insert, R for replace, U for undo, > for append, >D for delete at end, >R for replace at end, and D> for clear). We suggest Hpmodify when using Qedit over finicky datacomm networks, since it does not require any Control codes.

Hpmodify Keys - Reference

 

Directive

Effect

i

INSERT. If text follows the i, this text is inserted in the current line, starting at the position of the i.

r

REPLACE. If text follows the r, this text replaces the same number of characters in the current line, beginning at the position of the r.

d

DELETE. Deletes a character from the current line for each d specified in the edit line. Note that "d d" does not specify a range as it does in MPE V but simply deletes one character above each d. Multiple d's may be followed by an Insert or Replace operation.

d>

DELETE. Deletes to the end of the current line from the position specified by d>. May be followed by an Insert or Replace operation.

>

APPEND. If text follows the >, this text is appended to the end of the current line. If a > without text is positioned beyond the end of the current line, then a simple replacement is performed instead.

>d

DELETE. Deletes from the end of the current line, right-to-left. Multiple d's and Insert and Replace strings may be specified after > .

>r

REPLACE. Replaces characters at the end of the command line. The last (rightmost) character of the replacement string is at the end of the line.

c

CHANGE. Changes all occurrences of one string to another in the current line starting at the c. The search string and replace string must be properly delimited. A proper delimiter is a nonalphabetic character (such as ' " or /) The substitution is specified as cdelim search-string delim [replace-string [delim]]. Omitting the replace-string causes occurrences of search-string to be deleted, with no substitution.

u

UNDO. A single u in column one cancels the most recent edit of the current line. Using the Undo command twice in a row cancels all edits for the current line and re-establishes the original, unedited line. If u is placed anywhere other than column one of the current line, then a simple replacement is performed. Undo makes sense only if you have a line on which you have performed some editing that can be "undone."

other

Simple replacement. Any other character (not i, r, d, d>, >, >d, >r, c, or u) will be put into the current line at the position above where it is placed, replacing any existing character. Simple replacement also occurs for the editing characters i, r, c, or > if they are not followed by text; or if > appears at or beyond the current end of line.

 

Hpmodify Examples

 

Edit

Action

u

First occurrence undoes the previous edits. The u must be in column one.

u

Second occurrence undoes all edits on the current line. The u must be in column one.

rxyz

Replaces the current text with xyz starting at the position of r.

xyz

Replaces the current text with xyz starting at the position of x.

ixyz

Inserts xyz into the current line, starting at the position of the i.

ddd

Deletes three characters, one above each d.

d xyz

Deletes a single character above the d, skips one space, then replaces the current text with xyz starting at the position of x.

ddixy

Deletes two characters, then inserts xyz in the current line starting at the position of the i.

d d

Deletes one character above the first d, skips two spaces and deletes a second character above the second d. It does not delete a range of characters, making it unlike the MPE V version of Redo.

d d>xyz

Deletes a single character above the first d, skips two spaces and deletes to the end of the line beginning at the second d, and then places xyz at the end of line.

>xyz

Appends xyz to the end of the current line.

>ddxyz

Deletes the last two characters from the end of the current line and then places xyz at the end of the line.

>rxyz

Replaces the last three characters in the current line with xyz.

>ixyz

Appends xyz to the end of the line. In this case, the i command is superfluous, because > accomplishes the same result. Using >xyz would be sufficient.

c/ab/def

Changes all occurrences of ab to def, starting at c.

c"ab"

Deletes all occurrences of "ab" starting at c.

cxyz

Replace the current text with cxyz, starting at c. Because delimiters have not been specified (as they were in the previous two examples), this is a simple replacement with the four characters.

 


Creates a new, empty Qedit workfile and opens it. This can be either an unnamed extra scratch file or a named workfile. The advantages of a workfile are that you can instantly Open and Shut it, and that it compresses your data. You can use Text to make a copy of a Qedit file when you wish to protect the work you have done.

NEW filename [,language [ (size) ]

NEW

(Default: extra scratch, 3200 lines)

Qedit shuts the current file and builds filename, which it then opens for editing. If you leave out filename, Qedit creates a new extra scratch file and assigns it a number (1,2,3..) so that you can recognize it in Verify Open and Open ?. Up to eight extra scratch files are allowed (see also the TextJ command). You can convert a scratch file into a named workfile at any time by Opening it and doing Shut filename. You cannot Exit without discarding or saving any edits you have done in an extra scratch file.

The language defaults to the current Set Lang value, but can be overridden. This is useful for forcing creation of a Jumbo workfile in Qedit/MPE by doing "new abc,data."

If you want to force creating a Wide-Jumbo format, you should set the Length to a value larger than 1,000 before issuing the New command.

/Set Length 2500

/New newwork

These commands create a new permanent workfile called Newwork. If you want to create a new scratch file, enter the New command by itself.

The optional size specifies the number of lines you expect to add to the file. The minimum size is 200 lines, the default is 3200 (see Set Work for increasing or decreasing the default size), and the maximum is either 65,535 or 99,999,999.

Examples

/new                       {create an extra scratch file}

/new memos                 {create an empty file named Memos}

/set lang job              {define file as 80-column records}

/add

 

/new forbig,data (100000)  {Jumbo workfile}

/new frankie(500)          {build Frankie for 500 lines}

/aq 1=johnny               {memos was shut automatically}

Building Workfiles with Text

You can also create new workfiles while doing a Text command.

/text johnny                  {copy Johnny file into Qeditscr}

/shut frankie                 {save Qeditscr as Frankie file}

    or...

/t frankie=johnny             {build Frankie file ...}

                              {and copy Johnny into it}

The advantage of this method over New is that Qedit ensures that the size of the new workfile is always large enough for the external file, plus room for expansion. When you create the workfile with New, you may not build it large enough to hold a file that you Text into it later.


Instantly opens or reopens a Qedit file for editing or browsing, as opposed to the Text command which creates a copy of a file for editing.

                OPEN     filename[,BROWSE|DEFER|NODEFER]

                                *

                                *-n

                                ?

(Default: edit primary scratch file)

Qedit shuts the current workfile and opens filename. The filename must exist (see New and Text) and must be a Qedit workfile or scratch file. You cannot Open a Keep file - you must first Text it into a scratch file.

Open filename,Browse opens a workfile for browsing in Qedit. You can use the List command, including List-Jumping, Hold, Visual mode HH and ZZ, and any other functions of Qedit which do not modify the file. Open-Browse protects you from making unplanned changes to a file.

If you try to Keep the file with its original name i.e. you enter a Keep without a filename, you will get an error.

/Open workfile,browse

/Verify Keep

Set Keep Name txtfile

/K

File opened with Browse, please specify a Keep file name

You can still force a Keep by specifying an explicit filename as in:

/Open workfile,browse

/Keep txtfile

TXTFILE.DATA.ACCT,OLD 80B FA # of records=16

Purge existing file [no]? y

Open filename,Defer opens the workfile without write access, but acquires write access later if you attempt to modify the file. Set Open Defer On makes Defer the default and Open filename,Nodefer overrides that command.

It is important to remember that certain workfile attributes and settings are normally saved when the file is opened with write access. Some of these settings are the ZZ marker, the current line marker (*), and a new default Keep name modified with Set Keep Name. If you open a workfile in Browse mode, these settings are not updated unless the file is re-opened with write access.

To reopen the file most recently accessed, do open *; for the file before that do open *-1, then open *-2, and so. To select from a list of recently accessed files, do open ?.

Examples

/open mail             {want to edit Mail}

/c "stop"start" @

/open *                {reopen previous file}

/list all

/open ?                {select a recent file}

/visual

/open *-1              {select file before last}

/list "function"

/open *-2              {select file before that}

/hold 400/500

/open                  {edit scratch file}

Notes

Since you must Open a file before editing, any command that requires an Open file prompts you for the filename if none is Open.

If you attempt to Open a file which is not a Qedit workfile, you see a message similar to the following:

/open qpart2

QPART2 Error: you can only Open Qedit workfiles (code=111)

You need to Text this file, not Open it.

The Open Stack

Qedit maintains an Open-Stack of the ten most recently Opened files. One of these is always reserved for the primary scratch file. You can have up to eight extra scratch files (see TextJ and New), which take priority over named workfiles in the Open-Stack. To reopen one of these files, do an open ? command. Open ? prints the list and prompts for a relative file number, starting with zero for the most recent (same as Open *).

Open *-n allows you to open one of the recently accessed files directly. Open *-2 opens the third file in the list, since zero is the first.

When you open any file it moves to the top of the list and the other files are pushed down one position. The Close command shuts the current workfile and removes it from the list of recently accessed files. This is useful to stop desired file names from dropping off the bottom of the list. If the file is a scratch file, you are prompted to Discard Changes.

Set Open Defer On

If you use Set Open Defer On, the Open command does not acquire write access to a workfile until you make a change to it. The workfile is opened with read access by default, unless Qedit knows you are going to be writing to it (as when Text or Add force an Open). If you only browse through the file, the Last-Mod date does not change. This includes full-screen mode viewing. However, if you make any changes to the file or use Set Left/Right/Length /Lang, Qedit reopens the workfile with write access.

It is important to remember that certain workfile attributes and settings are normally saved when the file is opened with write access. Some of these settings are the ZZ marker, the current line marker (*), and a new default Keep name modified with Set Keep Name. If you explicitly open a workfile in Browse mode or use Set Open Defer On, these settings are not updated permanently unless the file is re-opened with write access.

You can override the current Set Open Defer value by doing Open filename,Defer or Open filename,Nodefer.

There are a few error conditions that may occur if you attempt to modify a file because now someone else can edit the file while you have it open. For example, you cannot obtain write access if someone else already has write access to the file. In Visual mode, you may see the error "Unable to reopen file with write access. Concurrent usage/backup?".

If "Error: EXCLUSIVE VIOLATION: FILE BEING ACCESSED" appears when you try to open a file, it means that either someone is editing the file or it is being backed up.

If you are working in Visual mode, someone can delete the lines you want to edit after Qedit has displayed them on your screen. If this happens, Qedit does not update your screen and displays this error message: "File has changed since page last displayed. Another user?"

Crash Recovery

Qedit ensures the validity of workfiles after a system crash or program :Abort. It checks to see whether the file was properly closed the last time. If the file was in the midst of Renumber, Qedit completes the renumber. If the file was in the middle of a Text, Qedit clears the file so you can do the Text over again. In all other cases, Qedit prints a RECOVERY warning and searches through the file to eliminate any duplicate lines. After a RECOVERY, examine the area of lines that you were last editing. A few lines may be missing or out-of-date, but that is all. If a workfile is ever damaged, use the Serial option of QCOPY to recover the file.

File Modification Timestamp

When you use the Text or Keep commands on a file, Qedit stores the file's modification timestamp in the workfile. If you Shut the workfile to do something else, the next time you Open it, Qedit will compare the stored value with the file's current timestamp. If they are different, it means that the original file has changed either since you last worked on it or since the last time you saved your changes. Qedit will alert you to the difference by displaying a message similar to the following:

 Warning: Original file has been modified since the

 initial Text or last Keep !

The file timestamp can change for a number of reasons. Here are few examples:

·         Someone else might have been working on that same file with Qedit and saved their changes before you did.

·         The file could have been restored.

·         Maybe you used the file to test a program which modified the file in some way.

Because the timestamp message is just a warning, Qedit continues its processing. However, if you want to be sure you are not missing important data, you should compare the contents of the file with your workfile and decide if it is safe to continue editing your copy.

This is one way to compare the files:

·         Use Verify Keep and write down the default Keep name

·         Keep the workfile under a different name

·         Use our Compare bonus program to display the differences between the original file and the new version you just created

·         Look at the report and separate the lines that you changed from the ones you did not touch

·         If needed, apply changes to your copy so that you do not miss anything important

It is important to remember that certain Qedit commands will shut and open workfiles on your behalf. The timestamp warning might appear when you do not expect it.

By default, timestamp checking on Open is disabled. If you want to change this setting, you can use the Set Open Checktimestamp command.


The Pause command has two uses: to suspend Qedit for a specified number of seconds, or to print a prompt message on the screen and wait for the user to press Return. If the parameter is numeric, Pause does a timed wait. If the parameter is not numeric, it is used as the prompt message and a wait for user Return is done instead. The Pause command is handy in usefiles to provide time for the user to read the screen before continuing.

:PAUSE [ seconds | message ]

(Defaults: read without a prompt)

The message is not in quotes and is separated from the command name by a single space.

Examples

/pause 5            {wait for 5 seconds}

/display To get out of Suprtool, type Exit

/pause Press Return when ready to try Suprtool.

/run suprtool.pub.robelle


Converts the object code in a USL file into a "program file". USL files are produced by compilers. Program files are what you execute in the :Run command.

                :PREP     [ uslfile ] [ ,progfile ] [ ; ]

                                [ STACK words ]

                                [ MAXDATA words ]

                                [ DLSIZE words ]

                                [ RL rlfile ]

                                [ CAP caplist ]

                                [ PMAP ]

                                [ QMAP ]

                                [ LP ] {map to printer}

                                [ PATCH words ]

                                [ ZERODB ]

                                [ FPMAP ]

                                [ NOFPMAP ]

                                [ YES ]

                                [ NO ]

                                [ NOSYM ]

                                [ CHECKSUM]

(Defaults: uslfile = $oldpass,

progfile = $newpass;

see Set MAXDATA for default;

see Set RL for rlfile)

The parameters to :Prep are the same as in MPE. Keyword parameters can, of course, occur in any order. In Qedit, all parameters including file names are optional. Most of the parameters may be shortened to a single letter.

 

uslfile

USL file produced by the compiler (default = $oldpass).

progfile

PROG file produced by the :Prep (default = $newpass).

STACK

specifies starting dynamic stack (seldom needed).

MAXDATA

specifies largest stack size (MPE expands).

CAP

specifies capabilities (example: CAP IA BA PH MR).

PMAP

causes a procedure map to be printed.

QMAP

causes the PMAP to be reorganized into a more readable report; procedures are put into alphabetical order and a segment-size histogram is added. QMAP;LP directs the QMAP to the line printer (QMAPLIST). The program Qmap.Pub.Robelle must be on the system.

LP

causes the PMAP or QMAP to appear on the printer.

PATCH

reserves a specified number of words at the end of each code segment for patches.

ZERODB

sets uninitialized global stack locations to zero.

FPMAP

writes a copy of the PMAP into the program file for debugging.

NOFPMAP

does not write a copy of the PMAP into the program file for debugging.

YES

purge any existing program without asking permission.

NO

do not purge any existing program file.

NOSYM

does not write the symbol table into the program file.

CHECKSUM

writes checksum information to the program file.

 

Examples

/open src       {open source file}

/modify ...     {make some changes}

/cobol *        {compile it, with code to $newpass}

/prep           {prep $oldpass,$newpass}

/run            {run $oldpass and see if it still works!}

 

/prep ,pf       {prep $oldpass into the file pf}

 

/prep;c mr lp   {prep with cap=mr and send pmap to printer}

Notes

If the program file already exists and it has CODE of "PROG", Qedit asks whether you want to purge it. If you answer NO, Qedit cancels the :Prep. After the :Prep, Qedit saves the program file, even if a nonfatal error occurs.

To send the QMAP to a disc file, use these commands:

/purge discfile

/build discfile;rec=-80,16,f,ascii

/file qmaplist=discfile,old;dev=disc

/prep uslfile,progfile;qmap   {do not use LP}

/list discfile


Calls an external subroutine and passes it lines to examine, update, delete, or split. Qedit has two built-in routines to downshift and upshift lines, DOWN and UP.

PROC     [name] [ S|P|G|PP|PG ] [ rangelist ]

[ DOWN | UP ]

(Q=reset workspace)

(Defaults: previous proc)

Except when name is one of the built-in routines (DOWN, UP), name must be a procedure in an SL file to be dynamically loaded and then called. If you omit name, PRoc calls the most recent procedure name (at startup this is DOWN). The procedure is only actually "loaded" the first time you mention it. Qedit keeps the procedure loaded as long as it can. Since DOWN and UP are part of Qedit, they need not be loaded from an SL, nor can they be unloaded. Use Verify Proc to list the current procedures.

Maximum

Set Limits Proc n determines the maximum number of procedures which Qedit will keep loaded for you at a time. The default is four. When you exceed the limit, Qedit unloads the one least-recently used. Normally, Qedit unloads procedures when needed to make room for new routines that you have asked to load. However, if you are using an Interface routine also, Qedit does not unload any of your procedures. That is because Qedit allows you to combine interface routines and Proc routines in the same routine and install both with a single Loadproc. The Qedit display will show that the Proc is gone, and you will no longer be able to call it, but it will not be unloaded. You will not be able to purge it from the SL unless you Exit from Qedit.

Proc passes each line of the rangelist to the procedure and updates the line upon return. If you omit rangelist, Proc passes a dummy line with all blanks and line number of " ? " instead; this allows you to call procedures without having a workfile Open.

For DOWN and UP, the default rangelist is the current line (*); PQ shifts quietly (i.e., without printing the lines); and PJ shifts with user verification (i.e., PJ prints each shifted line and asks you to approve it).

The library search options for the Proc command are as follows:

 

PROC procname S

Sl.Pub.Sys only

PROC procname P

logon Sl.Pub then Sl.Pub.Sys

PROC procname G

logon group, then Sl.Pub, then Sl.Pub.Sys

PROC procname PP

Sl.Pub in Qedit program account

PROC procname PG

SL in Qedit program account and group

 

Built-In PROCs to Shift Up or Down

The Up and Down Procedures put Roman-8 characters into uppercase or lowercase if Set Editinput Extend is On. Otherwise, they only operate on A-Z and a-z.

The first time that you use Down or Up after running Qedit, they ask you to configure them. There are 4 options: 1 means to shift every alpha character in the lines, 2 means to skip over characters enclosed in double quotes ("), 3 means to skip over characters enclosed in single quotes ('), and 4 means to skip over characters enclosed in either double quotes or single quotes. If Down (or Up) finds a line with unmatched quotes, it prints a warning and stops (unless the lines are part of a COBOL program, in which case unmatched quotes are okay).

/open qedit.doc         {open document file}

/list 415.1             {display a line}

  415.1   You will need to Purge the old file.

/proc down 415.1        {try it lowercase}

Set Shift DOWN?  1(@) 2(") 3(') 4(" or ')  [0]:2

  415.1   you will need to purge the old file.

/proc up 415.1          {try it uppercase}

Set Shift UP?  1(@) 2(") 3(') 4(" or ')  [0]:2

  415.1   YOU WILL NEED TO PURGE THE OLD FILE.

/proc down              {lowercase is better}

/proc 410/415           {downshift some more lines}

/pq 420/1002            {many more! quietly}

/pj up 1003             {upshift with approval}

 1003     >GET D-LINE (Okay?) yes

If you always configure the shifting routines to the same option (e.g., skip strings with double quotes), you can use Set Shift to define the configuration:

/set shift down 2 up 2

User-Written PROCs

Besides the two built-in PROCedures UP and DOWN, you can invoke any number of user-written PROCedures from SL files (four of these can be loaded at one time).

The QLIB contributed library contains two PROCedures: FINDJUNK to remove nonprinting characters from lines, and NEATER to align COBOL fields to specific columns. The easiest way to use them is to copy SL.QLIB into your logon account and/or group:

/:run fcopy.pub.sys

>from=sl.qlib.robelle;to=sl;new

>exit

 

/open memos                {open document with junk in it}

/proc findjunk,g,first/10  {cleanup start of current file}

/proc 1/50                       {cleanup some more lines}

/p findjunkq,g,51/last          {cleanup the rest quietly}

/:qhelp qlib.help.robelle,contr,findj       {check manual}

 

/open cobsrc                    {open a cobol source file}

/p neater40,g,12.3/14          {adjust some data division}

/:qhelp qlib.help.robelle,contr,neater

/p findjunk 2.1/2.4          {remove some phone junk too!}

For detailed instructions on coding user procedures, consult the index.


Prints a message on $stdlist.

Q [ "string" ]

(Default: print a blank line)

The string of up to 80 characters is printed on $stdlist.

Use the Q command to print prompts from usefiles. This works especially well when you use a file quietly.

Q can be used to include comments in batch mode. Use :COMMENT in usefiles for a nonprinting comment line.

Examples

Below is a usefile for compiling and preparing a large SPL program. The program reports to the user as it progresses. Because these commands may take a long time to complete, the last line is a Q command to wake us up by ringing the Bell.

Q "This usefile compiles/preps Suprtool."

Q "First we Shut your Open workfile, if any."

shut

:COMMENT Purge any existing USL file.  Will build new one.

:purge suprtool.usl

:COMMENT Use Segment Stdin= commands to init new USL file.

:run segdvr.pub.sys;stdin=toolseg.job

:COMMENT Save new USL file.

:save suprtool.usl

:COMMENT Drop security; we need access from many accounts.

:release suprtool.usl

:COMMENT Compile all source modules into USL file.

Q "USL file initialized for Suprtool."

:spl commag1.suprtool,suprtool.usl

:spl commhr1.suprtool,suprtool.usl

:spl commsz1.suprtool,suprtool.usl

:spl main1.suprtool,  suprtool.usl

:spl open1.suprtool,  suprtool.usl

:spl sort1.suprtool,  suprtool.usl

:spl util1.suprtool,  suprtool.usl

Q "All Suprtool source modules compiled."

:COMMENT Nested usefile to do the Prep command.

use prep.suprtool

:COMMENT Finally, use Q command to ring Bell on user terminal.

Q "Suprtool :prep is Done! <Control-G> ..."


When you execute a command file (or a UDC) from within Qedit, you can also include Qedit commands in the command file by preceding the Qedit commands with a slash (for example,/find "text").

/command line

(Defaults: none)

Qedit allows you to include Qedit command lines within UDCs and command files. You can check the result of the /Qedit command by testing CIERROR:

setjcw CIERROR = 0

continue

/open abc.source

/find "def"

if CIERROR=0 then

   /delete *

else

   if CIERROR=860 then

      display Invalid syntax in Qedit command!

   else

      if CIERROR=900 then

         display End of file - string not found!

      else

         if CIERROR=907 then

            display Non-existent file!

         endif

      endif

   endif

endif

As this example shows, the /Qedit command returns one of three CIERROR values:

 860 = Illegal Keyword

 907 = Non-Existent File

 900 = End Of File (returned by Find and Findup)

Note that these CIERROR values are only set when the commands are being executed from a User Command, not from $stdin or a usefile.

INSIDEQEDIT JCW

You can test whether your command file is being executed by Qedit by having it check the INSIDEQEDIT job control word, so as to only execute /Qedit commands while inside Qedit.


Invokes the QHELP subsystem on a specified help file. QHELP is a part of QLIB, the Robelle contributed library. The helpfile must have been processed by HELPCOMP.QLIB. The keyword parameters must be separated by commas, since blanks are allowed in a single keyword.

:QHELP helpfile [,keyword,...]

(Defaults: no keyword = start at top)

Examples

/qhelp qlib.help.robelle

/qhelp suprtool.help.robelle,commands,base


Enables you to modify and repeat any of the previous 1,000 command lines.

                REDO     [ start [ / stop ] ]

                                [ string ]

                                [ ALL | @ ]

(Default: redo the previous command)

The :Redo command allows you to modify the commands before it executes them. If you don't need to change them, use the :Do command. Commands are numbered sequentially from 1 as entered and the last 1,000 are retained. Use the :Listredo command to display the previous commands. You can redo a single command, a range of commands, or the most recent command whose name matches a string.

The :Redo command uses MPE-style commands (D, I, R, U and >) to modify a line. The following are some common commands. A complete list of commands appears at the end of this section. The default mode is to replace characters. To delete, type DDDD under the characters to be removed. To insert, type I under the insertion spot, then the new characters. To undo your changes, type U. To append to the end of the line, use >xxx. To delete from the end of the line, use >DD. To replace at the end of the line, use >Rxxx. And to erase the rest of the line, use D>. See below for a complete list of edits.

Examples

/listf @.soruce      {"source" is not spelled right}

NON-EXISTENT GROUP.  (CIERR 908)

/redo                {redo most recent command}

listf @.soruce       {last command is printed}

         our         {you enter changes to it}

listf @.source       {edited command is shown}

                     {you press Return}

 

/listredo all

/redo 5             {redo 5th command in stack}

/redo               {redo previous command}

/redo -2            {redo command before previous}

/redo 8/10          {redo 8th through 10th}

/redo -10/          {redo -10 through last}

/redo purge         {redo last Purge command}

/redo purge temp    {redo last "purge temp"}

/redo @temp         {redo last containing "temp"}

Notes

The :Redo command can be abbreviated to "," as in MPEX, but you cannot use ";" to combine commands on the same line. You can, however, stop a Redo ALL using the Control-Y key. To save more commands, use a :File command on the file Qedredo before running Qedit:

:file qedredo;disc=5000

:run qedit.pub.robelle

Editing in :Redo

:Redo uses the same edits as the MPE/iX :Redo command, except that control characters in lines are printed as dots "." so that you can see them. Use Set Modify Hpmodify to select these MPE-style edits for all commands. If you prefer the Qedit-style edits, use Set Modify Robelle to select Qedit editing for all commands, including :Redo. If you prefer Qzmodify, use Set Modify Qzmodify to select Qzmodify editing for all commands.

Persistent Redo

Redo commands can be saved in a permanent file and can therefore be used from another session. You can use the Set Redo command to specify a file name to save your redo commands. Please see the Set Redo command for details.


Executes a Reflection command on your PC. Qedit checks whether the command succeeds or fails. A failure is treated like the failure of an MPE command. :Reflect allows you to control a PC from within your HP e3000 UDCs or batch job (send and receive files, backup your PC, execute PC programs, etc.).

:REFLECT reflection command

(Defaults: none)

Examples

/reflect type mreport.crt

/reflect shell lotus

Version of Reflection

The :Reflect command depends on Reflection's ability to accept commands using an escape sequence, and to be able to pass back a status code indicating whether the command succeeded. These features are implemented in the following versions of Reflection:

·         Reflection 1 for DOS version 1.40 or later

·         Reflection 3/7 for DOS version 1.55 or later

·         All versions of Reflection for Windows

·         All versions of Reflection for Macintosh

Batch PC Control

You can use the :Reflect command in a batch job, but you must do a :File equation to specify the PC that you wish to control. The file name is Qedcrt and you must redirect it to a hard-wired PC port. If you wish to switch to another PC, use Set Vis Stop and another :File command. Here is an example:

!job pcbackup,user.acct

!file qedcrt;dev=29

!run qedit.pub.robelle

reflect dir

continue

reflect dri                   {oops}

 

Your Reflection command failed.

10 = ERROR-CODE from the Reflection PC.

 

UNKNOWN COMMAND NAME.  (CIERR 975)

 

file backup = backup.wade

continue

reflect backup c:\*.* /S      {need Reflection PLUS option}

 

set vis stop                  {prepare to access 2nd PC}

file qedcrt;dev=58            {define second PC}

file backup=backup.rockey

continue

reflect backup c:\*.* /S      {add /C for full backup}

exit

!eoj

Debugging PC Errors

The examples above show PC functions with and without error control. If you want the job to continue, even if the :Reflect command fails, put a :Continue in front of each :Reflect command. The error CIERROR 975 will be returned if the :Reflect command fails for any reason.

Remember, in order to get :Reflect to work in batch:

·         The PC must be turned on.

·         Reflection must be running.

·         The Reflection baud rate must be the same as in the MPE configuration.

·         The PC must not be logged on to the HP e3000.

·         For the Backup command to work, Reflection must be a Plus version.

If the :Reflect command fails, Qedit will display the Reflection error-code. If you have a version of Reflection that is capable of passing back the error-code, Qedit will also put the error-code in a JCW named QEDPCERROR. For an explanation of Reflection error-codes, refer to the Reflection Command Language reference manual.

Using Line Mode

Some Reflection command files work fine when executed from the Alt-Y command line, but fail (possibly leaving your terminal in a locked state) when invoked with Qedit's :Reflect command.

The reason is that Qedit's :Reflect command sends an escape code to Reflection to invoke the command. Then Qedit waits for Reflection to send back a status code to indicate when the command is finished. While Qedit is waiting for the result code from Reflection, it isn't capable of executing other Qedit commands -- it's already executing a Qedit command! The only thing that Qedit is capable of doing while it's waiting is to execute any MPE commands that Reflection might send to the HP e3000. The reason MPE commands must be accepted is that Reflection sends a :Run command for PCLINK whenever a file transfer is requested.

As long as the command or command file doesn't attempt to transmit any data to the HP e3000, :Reflect will probably work the same way as Alt-Y.

For example, here is a Reflection command file that works from Alt-Y, but not from :Reflect.

; BYE

; This command file gets me out of Qedit, logs me off

; the HP e3000 and exits from Reflection back to DOS.

;

transmit "exit^M"

wait 0:01:00 for "^Q"

transmit "yes^M"

wait 0:01:00 for "^Q"

transmit "bye^M"

wait 0:01:00 for "CONNECT"

wait 0:00:05

hardexit

Also see the chapter "Qedit Issues and Solutions" for more information.


Renumbers a range of lines or the entire workfile.

RENUM [ firstline ] [ maxincr]

[ startline / stopline ] [ maxincr ]

(Default: entire file from 1.0 by current increment)

If you specify a range of lines (e.g., 101/102), Qedit spreads out the line numbers in that range to allow as much space as possible between each line. The numbers of the startline and stopline are not changed.

If you do not specify a range, Qedit renumbers the entire file, starting at 1.0 or from the optional startline value.

If you specify a maxincr value, Renum will attempt to renumber with that increment. If it must use a smaller value, it will print a warning. If you do not specify a maxincr value, Renum attempts to use the current Set Increment value which defaults to 1.0 (except for standard COBOL which is 0.1).

Examples

/ren             {assign new numbers to all lines}

/list 10/11      {show current line numbers}

   10     The Renumber command

   10.2   has two basic modes:

   10.21     1.  renumber an entire file

   10.211    2.  spread out a range of lines

   11     to make room for new lines.

/add 10.21       {attempt to add a line}

Out of line numbers.  Suggest Renumber.

/ren 10/11       {spread out line range evenly}

/list 10/11      {check new lines numbers}

   10     The Renumber command

   10.2   has two basic modes:

   10.4     1.  renumber an entire file

   10.6     2.  spread out a range of lines

   11     to make room for new lines.

/add 10.4        {now you can add some lines}

   10.5        (usually from 1.0 by 1.0).

   10.51   //

Notes

If you keep adding new lines at the same spot in a file, Qedit will assign incremental line numbers such as 3.01, 3.011, but it cannot add a line between 3.011 and 3.012. The smallest increment between lines is 0.001. When you run out of line numbers, Qedit warns you. You can Renumber a range of lines or the entire file to get around this problem.


Replaces lines with new text, either from Stdinx or from the Hold file.

REPLACE [ $HOLD ] rangelist

(Q=no printing, T=template, J=justified)

(Default: rangelist = *)

Replace $hold looks for new lines of text in the Hold file (see the Hold command) and uses each to replace one of the lines of the rangelist. Replace without $hold prints each line of rangelist, then waits for you to type a new line at the keyboard. Pressing Return only erases the line! Replacej indents the new line the same number of columns as the original line. $Hold can be abbreviated to $h.

Examples

/rq $hold 50/70     {replace from the Hold file}

/rq $h 50/70        {replace from the Hold file}

/rep 5              {replace line 5 only}

    5     LINE 5      {prints existing contents}

    5     NEW LINE 5  {prompts you with linenum}

Column Editing with $Hold

You can use the $hold option of the Replace command to do extensive column editing:

/lt @

          ....+....10...+....20...+....30...+....40...

     1    *****************

     2    *   Page One    *

     3    *****************

     4    *****************

     5    *   Page Two    *

     6    *****************

/holdq 4/6      {hold the second page of text}

/deleteq 4/6    {now delete those lines}

/set left 20    {set your left margin to starting column}

/repq $hold 1/3 {overlay from the Hold file}

/set left 1     {don't forget to reset left margin}

/lt @

          ....+....10...+....20...+....30...+....40...

     1    *****************  *****************

     2    *   Page One    *  *   Page Two    *

     3    *****************  *****************

You can copy columns of text from one position in a line to another by setting margins with the Set Left and Set Right commands, holding the columns of text that you want to copy, setting new margins, and replacing the new column range with the text in the Hold file. Here is a command file that works on MPE V and MPE/iX which does all this for you:

COPYCOL.CMD.SYS

parm fromcol,tocol,length,rangelist

/set right

/set left

setjcw right := !fromcol + !length

setjcw right := right - 1

/set right !right

/set left !fromcol

/holdq !rangelist

setjcw right := !tocol + !length

setjcw right = right - 1

/set left

/set right !right

/set left !tocol

/replaceq $hold !rangelist

/set right

/set left

For example, to copy text from columns 1/5 to column 30 in all lines, you would enter:

/copycol 1 30 5 @


Return is valid only in a UDC or command file; it exits at once, but returns a successful status rather than an error. Control returns to whatever invoked the User Command, which may be Qedit or may be another UDC or command file. Use :Return within an If or Else clause to get out. It can not be used at the Qedit prompt or in a Use file.

:RETURN

(Default: none)

Examples

if cierror = 999 then

   return

endif

See also the :Escape command.


Executes a program without leaving Qedit; returns to Qedit when done.

                :RUN      [ progfile ] [ ,entrypoint ] [ ; ]

                                [ STACK words ]

                                [ MAXDATA words ]

                                [ DLSIZE words ]

                                [ LIB [G|P|S] ]

                                [ PARM value ]

                                [ DE