Aliaó 1.2 bù Joå Wrighô 24 Augusô 1990 Thå  olä ALIAÓ prograí wilì noô assemblå witè V4LIBÓ  becauså  oæ thå  uså oæ DSEG® ALIAS0.COÍ anä ALIAS1.COÍ dï  noô  concatenatå properly®   Thå  businesó oæ concatenatinç COÍ fileó  haó  alwayó bothereä må iî anù case. Versioî  1.² ió significantlù differenô froí Conn'ó 1.±  iî  thaô thå  twï moduleó arå reverseä iî order® Thaô ió thå  reaì  aliaó modulå ió no÷ ALIAS° anä thå anä thå editoò ió ALIAS1®   Further¬ theù arå assembleä tï standarä REÌ fileó anä linkeä iî thå normaì waù tï á COÍ file. SLRNKÐ ALIAS/N,/A:100/J,ALIAS0,ALIAS1,/E or ZMÌ ALIAS=ALIAS0,ALIAS1 or LINË ALIAS=ALIAS0,ALIAS1[NR] ALIAS°  ió  no÷ thå actuaì aliaó modulå writteî tï disk®   Iô  ió entirelù selæ-containeä anä doeó noô calì thå Libraries®   ALIAS± ió thå editoò whicè promptó thå useò foò thå ALIAS° commanä line. ALIAS°  haó  beeî  enhanceä somewhaô tï  allo÷  alì  fivå  systeí filenameó  tï bå addressed¬ $F° beinç thå prototypå SH.VAÒ  shelì variablå  file® Thå 'T§ filetypå operatoò waó puô bacë  iî  sucè thaô  $T°  wilì poinô tï VAR® Thå 'T§ variablå  waó  removeä  iî versioî  1.±  foò somå reasoî thaô É don'ô  understand®   Iî  anù case¬ É havå puô iô bacë in. Aó  before¬  ALIAÓ haó onå 'escape§ character¬ '$§  dollar®   Thå characteró followinç '$§ arå interpreteä tï mean.. $î Wherå î varieó ° througè 9® $° returnó thå NAMÅ oæ thió aliaó (froí EXTFCB) $± returnó thå firsô tokeî oî thå commanä line $¹ returnó thå nintè tokeî oî thå commanä line Anù  $î whicè doeó noô havå á correspondinç tokeî returnó á  NULÌ string¬ nothing. $ª Thå entirå commanä linå withouô furtheò translatioî $Ä Thå currenô drivå letter $Õ Thå currenô useò number Foò  F¬  Î anä T¬ n=° ió thå SH.VAÒ filenamå anä n=1..´  arå  thå standarä Systeí Filå names. $Fî Systeí Filå î Namå anä Typå aó NAME.TYÐ (î ió 0..4) $Nî Systeí Filå î Namå aó simplù NAMÅ (î ió 0..4) $Tî Systeí Filå î Typå aó simplù TYÐ (î ió 0..4) $¤ Simplù returî onå '$§ tï thå commanä line ŠThå  aliaó createä bù ALIAS1² ió currentlù siø oò  seveî  recordó lonç dependinç oî assemblù options® Thå standarä aliaó ió  eighô recordó  anä  nï aliaó maù bå longer® Aliaó editoró  iî  generaì wilì rejecô á filå oæ ninå oò morå recordó anä declarå iô 'Noô aî Alias'® Thió eighô-recorä lengtè ió arbitrarù buô historical® Notå  alsï  thaô thå variouó Aliaó editoró reaä thå  inpuô  aliaó onlù tï geô thå commanä linå froí it® Theù tenä tï writå thå Ne÷ aliaó witè theiò owî Aliaó code¬ noô witè thå original® Aî sï iô ió witè ALIAS12® Iî lighô oæ this¬ É havå implementeä á ^Ó 'Save§ commanä sï  thaô yoõ caî reaä aî aliaó madå bù SALIAÓ oò whateveò anä savå iô witè thå ne÷ ALIAS° codå allowinç $F° oò $Tî extensions® Thå aliaó wilì builä á CCÐ commanä iî á locaì buffeò accordinç tï itó  argumentó anä thå taiì passeä tï iô aó iô waó  called®   Anù pendinç commandó iî thå MCÌ wilì bå appendeä tï thió locaì buffeò anä  theî thå entirå buffeò copieä tï thå beginninç oæ  thå  MCL® Thå aliaó theî 'returns§ tï thå CCÐ (ZCPR3© foò execution. VALIAÓ  anä  SALIAÓ implementeä á Modå controì iî  thå  aliaó  aó Normaì oò Recursive® Iî Recursivå Modå thå aliaó wilì cleaò  thå resô  oæ thå MCÌ anä copù onlù itó expansioî tï thå beginninç  oæ thå  MCL® Botè VALIAÓ anä SALIAÓ maintaiî thió flaç aô  10Cè  iî thå  aliaó aó 00è iæ Normaì anä 0FFè iæ recursive¬ anä á 46è  'F§ characteò aô 10Bh® ALIAS0.Z8° wilì maintaiî theså flagó anä  thå necessarù  codå  tï  implemenô 'Recursivå Mode§  aó  aî  assemblù conditionaì  foò  thoså whï maù insisô oî it® RECURSIVÅ  EQÕ  NÏ removeó thió codå anä ió thå waù ALIAS° ió assembleä here®   Morå oî recursioî lateò iî thió file. Thå commanä taiì oæ á giveî aliaó entrù maù bå nï longeò thaî 12¶ characteró becauså oæ thå constraintó oæ thå TBUFÆ size® Iæ  thå expansioî oæ á particulaò aliaó linå ió longeò thaî 12¶ byteó  wå flaç aî Ovfì erroò anä dï NOÔ movå thå aliaó intï thå MCL. SALIAÓ  allowó  placinç controì characteró iî thå  aliaó  script® Althougè  cute¬  É wondeò iæ iô ió necessarù oò  eveî  desirable® Thå  aliaó  createó commandó foò thå CCÐ anä thå CCÐ  expectó  nï controls® Whù allo÷ theí iî aî alias¿ É don't. No÷  tï thå subjecô oæ recursivå aliases® Recursioî occuró  wheî aî  aliaó  calló  itself®   Thió mighô  bå  usefuì  iî  aî  EDIT¬ ASSEMBLE¬ LINË sessioî wherå aî erroò flaggeä bù thå assembleò oò linkeò  woulä  automaticallù puô yoõ bacë iî youò editoò  tï  trù agaiî anä thå absencå oæ erroró woulä simplù exit® É wilì  leavå thå  uså oæ 'recursion§ tï thå readeò anä concentratå oî  ho÷  tï writå aliaeó whicè arå properlù recursive. Aô  firsô  blush¬ iô woulä seeí thaô wå coulä dï  somethinç  likå this.. FOOº PROGRAÍ Somå prograí whicè setó thå Erroò flag IÆ EÒ No÷ checë foò Error Š FOÏ Re-ruî FOÏ oî error FÉ Closå thå IF Anä  wå can¬ almost® Iæ therå ió aî error¬ FOÏ ió  rerun®   Thió leaveó aî unresolveä IÆ oî thå Flo÷ stacë anä appendó thå lasô FÉ tï thå 'new§ aliaó iî thå MCL® Eacè iteratioî pusheó anotheò  IÆ ontï  thå Flo÷ stacë anä addó anotheò FÉ tï thå MCL®   Everythinç ió finå untiì eitheò thå Flo÷ stacë overflowó (eighô IF'ó max© oò thå  MCÌ filló uð witè alì thå FI's® Noô reallù cooì becauså  wå neveò kno÷ ho÷ manù timeó wå reruî FOÏ noò ho÷ mucè rooí wå  havå iî thå MCL® Thå  solutioî  ió  simplå  buô  requireó  á  littlå  explanation® Rewritå  thå aliaó sï thaô itó 'recursion§ neitheò overflowó  thå Flo÷ stacë noò thå MCL® Consider.. FOOº FÉ Closå IÆ ER PROGRAM IÆ ER FOÏ Reruî thió alias Thió onå haó nï pendinç FÉ tï overflo÷ thå MCÌ anä wilì keeð  thå Flo÷  stacë  straighô whilå iô ió 'recurring'® Thå firsô  FÉ  ió balanceä bù callinç iô correctlù witè anotheò alias¬ likå this.. RUNº IÆ Ô Impresó Truå oî thå Flo÷ stack FOÏ Executå FOO FÉ Closå thå IF Watcè ho÷ nicelù thió expands.. RUNº IÆ Ô Seô Flo÷ True FOOº FÉ Closå IÆ Ô froí RUÎ oò IÆ EÒ froí FOO PROGRAÍ Clearó (anä maybå sets© Erroò flag IÆ ER FOÏ Ruî FOÏ agaiî iæ ER FÉ Froí RUN¬ Closå IÆ EÒ froí FOÏ wheî nï Error Perfectlù  balanced® Writteî thió way¬ recursivå aliaseó dï  noô corrupô eitheò thå Flo÷ stacë oò thå MCL® Yoõ caî enteò commandó followinç  RUÎ oî thå commanä linå anä theù wilì  remaiî  pendinç untiì RUÎ ió finisheä anä theî bå executeä automatically. Therå  ió  nï  neeä foò á 'Recursivå  Mode§  aliaó  whicè  clearó pendinç  commandó froí thå MCÌ aó iô runs® 'Normaì  Mode§  workó quitå  nicely¬ thanë you® .pa Š Roâ Friefelä haó appriseä må oæ aî articlå iî TCÊ 2¸ bù Jaù  Sagå whicè presentó thå samå argumenô oî recursioî aó above® É swear¬ É  didn'ô  reaä thaô article® Maybå 'greaô  minds§  thinë  alikå afteò all® Perhapó É caî offeò 'nesting§ oæ aliases.. RUN: IÆ Ô Pusè Truå ontï thå Flo÷ stack MAIÎ Ruî MAIN FÉ Poð thå Flo÷ stacë anä resumå MCÌ commands MAIN: FÉ Poð thå Flo÷ stack PROG± Dï something® Seô EÒ iæ wå neeä FOO. IÆ ER FOÏ Ruî FOÏ iæ anù error FI IÆ EÒ FOÏ returnó EÒ tï forcå onå morå PROG1 MAIN FOO: FI PROG² Dï something® Cleaò EÒ tï dï PROG² again. IÆ ~EÒ Checë thå EÒ flag FOÏ Reruî PROG2 Iî  thió scenario¬ PROG± wilì bå ruî anä oî error¬ PROG² ió  run® Iæ  PROG² ió run¬ iô wilì repeaô untiì iô setó EÒ anä theî  PROG± wilì  bå ruî again® Thió keepó uð untiì PROG± doeó noô  seô  thå erroò flag. É  wilì  leavå iô tï thå readeò discerî á uså foò this¬  buô  thå forí oæ thå aliaseó ió correcô anä allowó yoõ tï appenä  commandó tï RUÎ tï thå extenô oæ thå MCÌ lengtè® Iô expandó likå this.. RUN: IÆ Ô Pusè Truå ontï thå Flo÷ stack MAIN: FÉ Poð thå Flo÷ stack PROG± Dï something® Seô EÒ iæ wå neeä FOO. IÆ EÒ Ruî FOÏ iæ anù error FOO: FI PROG² Dï something® Cleaò EÒ tï dï PROG² again. IÆ ~EÒ Checë thå EÒ flag FOÏ Reruî FOÏ iæ nï error FI IÆ EÒ FOÏ returnó EÒ tï forcå onå morå PROG1 MAIÎ Ruî MAIN FÉ Poð thå Flo÷ stacë anä resumå MCÌ commands end Š