You should continue the conversation over on the VM list.

I use a system that generates the AUX files dynamically for each "xedit with update function". There is only one CTRL file, which has:
TEXT MACS
FIXES AUXLIST

My personal source control system uses SFS with program level locks which require check-out and check-in. I wrote it back somewhere around 1990 and have used it in several shops since then.


Tony Thigpen

Binyamin Dissen wrote on 2/23/22 03:21:
Thanks to all.

SIDCODE does the job.

Now I have to remember how to make AUX files. I can make CNTRL files, but
multi-source fixes would eventually drive me to a separate CNTRL per source.

On Mon, 21 Feb 2022 18:49:22 -0500 Phil Smith III <[email protected]> wrote:

:>I think I misread the requirement. Try this version, which also handles
:>block commands.
:>
:>
:>
:>/*
:>   PREFIXO
:>   K  -- Kopy prefix subcommand
:>   O  -- Overlay prefix subcommand
:>   OO -- Overlay block prefix subcommand
:>
:>   Designed to be used with:
:>
:>   COMMAND SET PREFIX SYNONYM K  PREFIXO
:>   COMMAND SET PREFIX SYNONYM O  PREFIXO
:>   COMMAND SET PREFIX SYNONYM OO PREFIXO
:>*/
:>   arg p f l rest
:>   if f = 'CLEAR' | p <> 'PREFIX' then exit  /* Nothing to do, great */
:>   parse source . . . . . pcmd .
:>   if rest <> '' then signal Error     /* Operand, we don't do those */
:>   if index('KOO', pcmd) = 0 then signal Error   /* Not ours?? error */
:>   'COMMAND LOCATE :'l              /* Go to the line we're handling */
:>   if pcmd = 'K' then signal JustWait      /* Kopying, go Wait for O */
:>   'EXTRACT /PENDING K'                    /* Is there a pending K?? */
:>   if pending.0 = 0 then signal JustWait            /* No, just wait */
:>   kline = pending.1                /* Remember where Kopied line is */
:>   'COMMAND LOCATE :'pending.1 'COMMAND EXTRACT /CURLINE'      /* Go */
:>   kopy = curline.3                           /* Get the Kopied data */
:>   'COMMAND EXTRACT /PENDING BLOCK OO :0' l     /* See if OO pending */
:>   select
:>      when pcmd = 'O' then do
:>         call Overlay l l                       /* Simple O, do that */
:>         'COMMAND LOCATE :'kline 'SET PENDING OFF'    /* And clear K */
:>      end
:>      when pending.0 = 0 then                /* OO and not pending?? */
:>      'COMMAND LOCATE :'l 'COMMAND SET PENDING BLOCK OO'     /* Wait */
:>      otherwise     /* OO and already a pending K and OO, process it */
:>      call Overlay pending.1 l                 /* Go do the overlays */
:>      'COMMAND LOCATE :'pending.1 'SET PENDING OFF'      /* Clear OO */
:>      'COMMAND LOCATE :'kline 'SET PENDING OFF'       /* And clear K */
:>   end
:>   exit
:>
:>/* Do overlays: Build replacement lines, overlaying only blanks */
:>Overlay:
:>   arg s e                                    /* Start and end lines */
:>   do n = s to e                                /* Spin through them */
:>      'COMMAND LOCATE :'n 'COMMAND EXTRACT /CURLINE'     /* Get data */
:>      r = ''                                   /* No replacement yet */
:>      do i = 1 to length(kopy)     /* Only care about overlay length */
:>         c = substr(curline.3, i, 1)      /* Get character from line */
:>         if c = '' then r = r || substr(kopy, i, 1) /* Overlay blank */
:>         else r = r || c               /* Don't overlay if not blank */
:>      end
:>      if r <> '' then 'COMMAND REPLACE' r     /* Replace if not null */
:>   end
:>   return
:>
:>JustWait:                   /* Reset pending command, either K or OO */
:>   'COMMAND SET PENDING ON' pcmd
:>   exit
:>
:>Error:                                 /* Invalid, show prefix error */
:>   'COMMAND SET PENDING ERROR' pcmd rest
:>   exit
:>
:>
:>
:>
:>----------------------------------------------------------------------
:>For IBM-MAIN subscribe / signoff / archive access instructions,
:>send email to [email protected] with the message: INFO IBM-MAIN

--
Binyamin Dissen <[email protected]>
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to