Trailing-Edge
-
PDP-10 Archives
-
bb-h138f-bm
-
7-sources/lres.bli
There are 10 other files named lres.bli in the archive. Click here to see a list.
%TITLE 'LRES - RESEQUENCE line-mode command'
MODULE LRES ( ! RESEQUENCE line-mode command
IDENT = '3-002' ! File: LRES.BLI Edit: GB3002
) =
BEGIN
!COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1981, 1988. ALL RIGHTS RESERVED.
!
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ONLY
!IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION OF
!THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THEREOF MAY
!NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE
!TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
!
!THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
!SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
!
!DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
!SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
!
!
!++
! FACILITY: EDT -- The DEC Standard Editor
!
! ABSTRACT:
!
! This module executes the line mode RESEQUENCE command.
!
! ENVIRONMENT: Runs at any access mode - AST reentrant
!
! AUTHOR: Bob Kushlis, CREATION DATE: February 3, 1978
!
! MODIFIED BY:
!
! 1-001 - Original. DJS 30-JAN-1981. This module was created by
! extracting the routine EDT$$RSEQ_CMD from the module EXEC.BLI.
! 1-002 - Regularize headers. JBS 20-Mar-1981
! 1-003 - Use new message codes. JBS 04-Aug-1981
! 1-004 - Change the count to 48-bits. SMB 05-Feb-1982
! 1-005 - Pass count by address - use new global for reseq. count printout. SMB 07-Feb-1982
! 1-006 - Use EDT$$FMT_BUF instead of EDT$$OUT_FMTBUF. JBS 05-Jul-1982
! 1-007 - Make edt$$tst_eob in line. STS 22-Sep-1982
! 1-009 - Put edt$$rng_posfrst in line. STS 11-Oct-1982
! 3-001 - Fix EDT$$FMT_STR and EDT$$FMT_STRCNT. CJG 22-Mar-1983
! 3-002 - Add updates from V3 sources. GB 29-Apr-1983
!--
%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!
REQUIRE 'EDTSRC:TRAROUNAM';
FORWARD ROUTINE
EDT$$RSEQ_CMD : NOVALUE; ! Process the RESEQUENCE command
!
! INCLUDE FILES:
!
REQUIRE 'EDTSRC:EDTREQ';
!
! MACROS:
!
! NONE
!
! EQUATED SYMBOLS:
!
! NONE
!
! OWN STORAGE:
!
! NONE
!
! EXTERNAL REFERENCES:
!
! In the routine
%SBTTL 'EDT$$RSEQ_CMD - RESEQUENCE line-mode command'
GLOBAL ROUTINE EDT$$RSEQ_CMD ! RESEQUENCE line-mode command
: NOVALUE =
!++
! FUNCTIONAL DESCRIPTION:
!
! Command processing routine for RESEQUENCE.
!
! FORMAL PARAMETERS:
!
! NONE
!
! IMPLICIT INPUTS:
!
! CUR_BUF
! LNO5
! RNG_ORIGPOS
! WK_LN
! EXE_CURCMD
! EXE_SBITS
! EXE_SBLK
!
! IMPLICIT OUTPUTS:
!
! CUR_BUF
!
! ROUTINE VALUE:
!
! NONE
!
! SIDE EFFECTS:
!
! NONE
!
!--
BEGIN
EXTERNAL ROUTINE
EDT$$FMT_STRCNT : NOVALUE,
EDT$$FMT_CRLF, ! Terminate an output line
EDT$$FMT_MSG,
EDT$$FMT_STR,
EDT$$NXT_LNRNG,
EDT$$RNG_REPOS,
EDT$$RNG_RETFRST,
EDT$$CMP_LNO,
EDT$$TST_EOB,
EDT$$RD_PRVLN,
EDT$$RD_CURLN,
EDT$$RD_NXTLN,
EDT$$RSEQ;
EXTERNAL
WK_RESCNT : LN_BLOCK, ! Actual count of lines resequenced
CUR_BUF : REF TBCB_BLOCK,
LNO_ZERO : LN_BLOCK,
LNO5 : LN_BLOCK,
LNO0 : LN_BLOCK,
RNG_ORIGPOS : POS_BLOCK,
RNG_SAVPOS : POS_BLOCK,
WK_LN : REF LIN_BLOCK,
EXE_CURCMD : REF NODE_BLOCK, ! Pointer to the current command.
RNG_FRSTLN,
EXE_SBITS, ! The options switches.
EOB_LN,
EXE_SBLK : REF NODE_BLOCK; ! The option switch value block.
MESSAGES ((RANSPCSEQ));
LOCAL
COUNT : LN_BLOCK, ! The number of lines in the range.
RANGE : REF NODE_BLOCK, ! Address of the range block
SWB : NODE_BLOCK; ! Address of the switch value block.
!+
! Check for the /SEQ option. If not specified, then default the values
! to 1 and 1.
!-
IF ( NOT .EXE_SBITS<OPB_SEQ>)
THEN
BEGIN
EXE_SBLK = SWB;
MOVELINE (LNO5, SWB [SW_VAL1]);
MOVELINE (LNO5, SWB [SW_VAL2]);
END;
!+
! Check for the null range, making it WHOLE.
!-
RANGE = .EXE_CURCMD [RANGE1];
IF (.RANGE [RAN_TYPE] EQL RAN_NULL) THEN RANGE [RAN_TYPE] = RAN_WHOLE;
!+
! Position to the first line of the range.
!-
RNG_FRSTLN = 1;
EDT$$CPY_MEM(POS_SIZE, .CUR_BUF, RNG_ORIGPOS);
IF ( NOT EDT$$RNG_REPOS (.RANGE)) THEN RETURN;
!+
! If there is a preceding line, then make sure the starting line number
! is okay.
!-
IF EDT$$RD_PRVLN ()
THEN
BEGIN
IF (EDT$$CMP_LNO (WK_LN [LIN_NUM], EXE_SBLK [SW_VAL1]) GEQ 0)
THEN
BEGIN
EDT$$FMT_MSG (EDT$_RANSPCSEQ);
EDT$$CPY_MEM (POS_SIZE, RNG_ORIGPOS, .CUR_BUF);
EDT$$RD_CURLN ();
RETURN;
END;
EDT$$RD_NXTLN ();
END;
!+
! Count the lines in the range.
!-
MOVELINE (LNO_ZERO, COUNT);
WHILE (EDT$$NXT_LNRNG (0) AND (.WK_LN NEQA EOB_LN )) DO
ADDLINE (LNO0, COUNT, COUNT);
!+
! Reposition to the first line of the range.
!-
EDT$$CPY_MEM(POS_SIZE, RNG_SAVPOS, .CUR_BUF);
EDT$$RD_CURLN();
!+
! Do the resequence.
!-
EDT$$RSEQ (COUNT, EXE_SBLK [SW_VAL1], EXE_SBLK [SW_VAL2]);
!+
! Reposition to our place before starting the command.
!-
EDT$$CPY_MEM (POS_SIZE, RNG_ORIGPOS, .CUR_BUF);
EDT$$RD_CURLN ();
!+
! And display the number of lines processed.
!-
EDT$$FMT_STRCNT (WK_RESCNT, CH$PTR (UPLIT (%STRING (' line'))), 5);
EDT$$FMT_STR (CH$PTR (UPLIT (%STRING (' resequenced'))), 12);
EDT$$FMT_CRLF ();
END; ! of routine EDT$$RSEQ_CMD
END
ELUDOM