ÿWPC h˜Í¼“+Ý#éjàÊ—gû5=I†C‹BÍì^ÍZް?ü]\‡ À~÷åÂÌXÈÏÏÛè´d¢Ä˜MWë ÝKºGôRAºË¦7g‡ö¶5\Ü‚_2> M¡¼|ˆhj*UÑÑ»#J?}õŽsPѸpim=¿ÖÊ%¹Ät¢8a-W@X(âeH»ÞâW½þEÔpúëߢÃXâS5Þ?:ö–iA]ÈÇÒâPµÃÕûÿû"2L ýÎ+maÅSŒZ PîÕëób Ú >gÄ# ðL ž(HxL$ ÓÍS®ÖÝ>¤_ŠÛ$•év¦ÌM"iLuæíˆf³Wù‰¬Š0սϚŠî¹9mþq€àUÿZ켦çÍÐešU]–ñ˜ ±Bƒ/°.t.Á¬Ô"Éxúð¸âÎSZŸrÌ^ؾVËüÕ/|† ùµ„±/J²å–VUP´ % 0§  0±Ls¿nÇÆÊ e \‘ 0eí TR~¦ 0Ã$ ç 0eíXRw@ª4êþþ  m 1m&&à““ 1msààààààààààà 0Ãè D3« BÞ 0Ãûûûûûû AO¾Æ  0DÓ D/ BFFFFFFFFFFFFFFFFFÆc 0s)Æœ 0‡bbbbbbbbbbbb Cé«gQ¨Z8NewCenturySchlbk Regularõ(¥¿$¡¡Ó  ÓÔ€ô@D õ õôÔÔ€ô@D õ õô@DÔÓ °°-°œXÓÔ  ÔÑ  Ñ(š2Û$§§Ý ƒ¥¿!ÝÓ  ÓÔ€õp õõõÔÔ€ô<ôõõp ÔÓ °°-°œXÓÔ  ÔÑ  ÑÝ  Ýd:\office\wpwin\template\x3j3-rpt.wpt«<þ6X9`(CourierXÛxþ6X@ÉüKX@<þ6X9`(CourierôŒdþ6X@ÉüKô@+˜à`4New Century SchoolbookôÓe˜à Pâ’'CôPA, B,Level 1Level 2Level 3Level 4Level 5 RÝ ƒÛ'ÝÓ  ÓÔ€õp õõõÔÔ€ô<ôõõp ÔÓ °°-°œXÓÔ  ÔÝ  Ý›Ó °°§,°°-Óà€òò@(#àÔ‡»àø»ôô<Ôò ò¢J3£€/€97-152Ô#†ô<ô»»àø¿#Ôó óˆÐ X ТNCITS£€¢J3£€ANSI€Fortran€Standards€Committeeà€ll>(#àCraig€T.€DedoˆÐ i ÐCommand€Line€Arguments€&€Environmental€Variablesà€``:(#àFebruary€25,€1997ˆÐ *Ò ÐQuestions€&€Answersà€Š Š Š (#àPage€Ú  Ú1Ú  Ú€of€Ú C ÚÚ C Ú4#(¾2Quick A.ÚƒÚÚ  Ú.à0 àÛ€Û˜c:\COREL\OFFICE7\TEMPLATE\X3J3DO~1.WPT tÓ °°§,°œXÓòòÔ.4ƒ $C:\TEMP\97-152.WPD4ÔC:\TEMP\97-152.WPDÔ/  Ôóó(›3dS$©©Ý ƒ¥¿!ÝÓ  ÓÔ€õp õõõÔÔ€ô<ôõõp ÔÓ °°-°œXÓÔ  ÔÑ  ÑÝ  ÝH4#:.2Quick 1.ÚƒFÚÚ  Ú.à0 àÛ€FÛc:\Corel\Office7\Template\X3J3 Document.wpt kElPmEnPoEpPqErPsEtP=!3|xtÿU‹ÿÀÀÀ' e37=CIQYag³³1.a.i.(1)(a)(i)1)a)Command Line Arguments & Environmental Variables - Questions & Answers Í-$Craig T. Dedo$0Craig T. Dedo J3 / 97-152–.Command Line Arguments & Environmental Variables - Questions & Answers" Fortran 2000f17130 W. Burleigh Place ùBrookfield, WI 53005&/(414) 783-5869   ( )0 ' L-Fortran 2000 Requirement Approved\ NCITS J3 ANSI Fortran Standards Committee*American English # e37=CIQYag­­1.a.i.(1)(a)(i)1)a) (›3dS$££Ý ƒ¥¿!ÝÓ  ÓÔ€õp õõõÔÔ€ô<ôõõp ÔÓ °°-°œXÓÔ  ÔÑ  ÑÝ  Ý****'ÿÿdxd d(›3dS$¢¢Ý ƒ¥¿!ÝÓ  ÓÔ€õp õõõÔÔ€ô<ôõõp ÔÓ °°-°œXÓÔ  ÔÑ  ÑÝ  Ý2(34Cþÿ<< CÿÿƒLevel 1Level 2Level 3Level 4Level 5($$””ò òÚ  Ú1Ú  Úó ó55'÷ÿ dxdüÿP Pd1, 2, 3,Level 1Level 2Level 3Level 4Level 5B#:.21, 2, 3,NumbersÚƒFÚÚ  Ú.à0 àÛ€FÛa, b, c,Level 1Level 2Level 3Level 4Level 5V#:¾2a, b, c,Lowercase LettersÚƒHÚÚ  Ú.à0 àÛ€HÛõÿÿÿÿdÝ ƒ¥¿!ÝÓ  ÓÔ€õp õõõÔÔ€ô<ôõõp ÔÓ °°-°œXÓÔ  ÔÑ  ÑÝ  Ý›ÓC€  e'#CÓÑX°ÑÖ€ ÿÿÖ¢Ö€ ÿÿÖ£ÑX°ÑÓ  ÓÓr^°°Ü4` Œ ¸ ä <h”ÀìDpœÈô Lx¤Ð ü!(#T$€%¬&°°-rÓÑ  ÑÔ% € Ôà@³³ìàò òòòCommand€Line€Arguments€&€Environment€VariablesóóˆÐ t Ðó óà@WW!ìàò òòòQuestions€&€Answersóóó óˆÐ ˜$ ÐÌà@¦¦"ìàby€Craig€T.€DedoˆÌà@ˆˆ"ìàFebruary€25,€1997ˆÌÌà Ü àà  àThis€paper€is€intended€to€answer€some€of€the€questions€which€people€have€raised€concerning€the€particularÏimplementation€of€Command€Line€Arguments€and€Environment€Variables€which€I€have€proposed€in€papers€X3J3€/Ï97-110€and€¢J3£€/€97-151.€€ÌÌà Ü àò òDisclaimer:ó óà ` àThese€questions€and€answers€only€represent€my€own€personal€opinion.€€They€do€not€represent€in€anyÐ ‰  Ðway€any€official€opinion€or€position€of€X3J3,€WG5,€ANSI,€the€ISO,€or€any€other€organization€at€all.ÌÌQ:à Ü àWhy€did€you€choose€this€everything„at„once€approach€instead€of€simply€using€the€approach€(similar€to€existingÐ Ð\  Ðimplementations€by€Hewlett-Packard,€IBM,€and€Microsoft)€which€has€an€¢IARGC£€subroutine€to€get€the€number€ofÏarguments€and€a€¢GETARG£€subroutine€to€get€a€particular€argument?ÌÌA:à Ü àThere€are€several€reasons:Ð Ô`  Ðà Ü à1.à  àI€wanted€to€solve€a€number€of€closely€related€problems€at€once.€€I€wanted€to€do€the€job€right€the€first€time,€soÐ •! Ðthat€we€would€not€have€to€revisit€the€issue€later.Ìà Ü à2.à  àI€wanted€to€put€control€into€the€hands€of€the€application€programmer,€rather€than€limiting€the€capabilities€whichÐ £ Ðthe€application€programmer€has€available.€€An€everything„at„once€approach€provides€these€capabilities€for€the€applicationÏprogrammer,€while€the€¢IARGC£/¢GETARG£€approach€does€not.Ìà Ü à3.à  àI€wanted€a€facility€which€has€the€look-and-feel€of€Fortran€90€and€takes€advantage€of€the€advanced€features€ofÐ Zæ ÐFortran€90€and€Fortran€2000.Ìà Ü à4.à  àHuman€productivity€(e.g.,€function€points€per€labor€hour)€is€one€of€my€major€concerns€in€language€design.€Ð Üh ÐBecause€of€its€inherent€adaptability,€I€believe€that€the€¢wholistic£€approach€will€offer€greater€productivity€and€thereforeÏwill€be€more€cost€effective€for€the€application€developer€than€the€¢IARGC£/¢GETARG£€approach.Ìà Ü à5.à  àDifferent€users€have€different€needs.€€Even€the€same€user€has€different€needs€under€different€circumstances.€Ð « ÐSometimes€the€user€needs€an€¢unparsed£€command€line.€€Sometimes€the€user€needs€it€parsed.€€Sometimes€the€user€needsÏboth€at€the€same€time.€€Therefore,€an€everything„at„once€approach€which€allows€for€different€usages€of€this€feature€isÏpreferable€to€a€one-size-fits-all€approach.Ìà Ü à6.à  àPersons€who€are€comfortable€with€the€¢IARGC£/¢GETARG£€approach€can€still€use€that€method€with€the€¢wholistic£Ð #¯  Ðmodel.€€They€simply€can€call€¢GET_COMMAND_LINE£€with€only€the€¢NARGUMENTS£€andÏ¢COMMAND_ARGUMENTS£€arguments€and€then€¢iteratively£€search€through€the€¢COMMAND_ARGUMENTS£€array.€ÏThe€reverse€is€not€true.Ìà Ü à7.à  àPhilosophically,€I€believe€that€standards€committees€should€be€in€the€business€of€providing€to€users€the€toolsÐ '"³$ Ðthat€they€need€in€order€to€effectively€solve€their€problems.€€They€should€not€be€in€the€business€of€limiting€the€optionsÏwhich€users€have€available,€or€telling€users€what€is€the€One€True€Way€to€solve€their€problems.€€Users,€not€members€ofÏstandards€committees€or€outside€experts,€are€usually€the€best€judges€of€how€to€effectively€solve€their€problems.ÌÌQ:à Ü àWould€this€approach€be€costly€for€vendors€to€implement?Ð ì%x) ÐÌA:à Ü àFirst,€I€will€qualify€my€answer€by€revealing€that€I€do€not€have€any€experience€implementing€any€programmingÐ n'ú + Ðlanguage€nor€do€I€have€access€to€language€development€cost€information.€€I€invite€those€with€such€knowledge€to€shedÏlight€on€this€issue,€to€the€extent€that€they€can€without€violating€confidentiality€agreements€with€their€employers.€€ThatÏsaid,€I€do€not€believe€that€this€approach€would€be€very€costly€for€vendors€to€implement.€€Here€are€my€reasons:Ìà Ü à1.à  àParsing€is€a€well€advanced€technology.€€Parsing€a€command€line€is€a€far€less€complex€endeavor€than€parsingÐ r*þ#/ ÐFortran€source€code.Ìà Ü à2.à  àMost€modern€operating€systems€(OS)€already€provide€OS€routines€to€get€most€or€all€of€the€information€that€thisÐ ô+€%1 Ðapproach€requires.Ìà Ü à3.à  àMost€of€the€functionality€is€already€required€in€all€C€and€C++€compilers.€€A€vendor€could€do€a€quick-and-dirtyÐ v-'3 Ðimplementation€by€simply€calling€or€duplicating€the€appropriate€C€language€facilities.€€Currently,€there€is€a€TechnicalÏReport€on€Interoperability€with€C€in€the€works.€€I€expect€that€it€will€be€released€soon€and€it€is€intended€to€become€partÐ ø.„(5 Ðof€Fortran€2000.€€I€expect€that€most€vendors€willÏimplement€the€Interoperability€provisions€fairly€soon,€since€many€of€their€customers€want€thisÏfunctionality.€€The€Interoperability€with€C€feature€will€help€ease€the€burden€of€implementing€thisÏapproach.ÌÌQ:à Ü àIn€this€proposal,€¢GET_COMMAND_LINE£€currently€has€6€arguments.€€Isn't€this€subroutine€muchÐ Ì(  Ðtoo€complicated€for€the€average€user?ÌÌA:à Ü àNot€at€all,€for€these€reasons:Ð 0Œ  Ðà Ü à1.à  àThis€feature€is€intended€for€Fortran€2000,€not€FORTRAN€77.€€Starting€with€Fortran€90,Ð üX Ðprocedures€arguments€can€be€optional.€€If€the€programmer€uses€the€keyword€form€of€the€subroutine€call,Ïthe€programmer€can€select€the€arguments€which€he€or€she€needs€and€ignore€the€information€which€heÏor€she€is€not€interested€in.Ìà Ü à2.à  àPsychological€research€shows€that€the€average€person€can€keep€track€of€up€to€7€pieces€ofÐ ,ˆ Ðinformation€at€the€same€time€(Miller€1956;€see€also€McConnell€1993,€108-109).€€This€suggests€that€it€isÏacceptable€to€use€up€to€7€arguments€in€one€subroutine€interface.ÌÌQ:ñsñà0 Ü àñsññtñà Ü àñtñWhy€do€you€want€these€subroutines€to€be€intrinsic€to€the€language€rather€than€as€part€of€anÐ \¸ Ðintrinsic€module€for€operating€system€services?ÌÌA:à0 Ü àThere€are€a€number€of€reasons:ÐÀÜ(#Ü(# Ðà Ü à1.à0  àI€want€to€avoid€the€problems€that€C€language€application€programmers€have€in€having€toÐ Œè Ðremember€which€of€over€a€dozen€header€files€a€given€intrinsic€routine€is€defined€in.€€I€do€notÏwant€Fortran€programmers€to€be€faced€with€the€problem€of,€"Now,€if€I€reference€function€F€IÏhave€to€remember€to€USE€module€M."€€Application€programmers€should€be€spending€their€timeÏdeveloping€their€applications,€not€fighting€the€intricacies€and€limitations€of€the€language.Ð (#(# Ðà0 Ü à2.à0Ü(#Ü(#àThe€concept€of€an€intrinsic€module€was€developed€by€John€Reid€in€order€to€resolve€an€objectionÐ ˆ"ä# Ðto€floating€point€exception€handling.€€Some€persons€who€wanted€execution€speed€at€any€priceÏobjected€to€that€feature€because€they€thought€that€the€mere€presence€of€exception€handling,Ïeven€if€unused€in€their€own€program,€would€slow€down€their€code.€€The€command€line€argumentÏfunctionality€does€not€pose€such€problems.Ð (#(# Ðà Ü à3.à0  àI€do€not€believe€that€so„called€"name€space€pollution"€is€as€serious€an€issue€as€many€othersÐ „&à( Ðmention.€€We€have€up€to€31€characters€available€for€symbolic€names.€€Even€if€we€do€not€considerÏnonsense€or€objectionable€combinations,€there€are€many€more€combinations€available€thanÏpeople€could€possibly€use.€€In€order€to€avoid€name€conflicts,€we€could€reserve€a€prefix,€e.g.,€ISO_,Ïfor€use€by€the€standards€bodies.Ð (#(# ÐÌQ:ñqñà0 Ü àñqññrñà Ü àñrñWhy€use€operating€system€definitions€for€status€values€and€other€constructs€instead€of€leaving€thisÐ L+¨$. Ðcompletely€up€to€the€processor?ÌÌA:ñoñà0 Ü àñoññpñà Ü àñpñSome€operating€systems,€such€as€DEC's€¢OpenVMS£,€have€their€own€well„defined€system€of€conditionÐ °- '1 Ðcodes.€€DEC's€¢OpenVMS£€even€has€a€complete€Message€Utility€by€which€application€developers€canÐ |.Ø'2 Ðdevelop€their€own€condition€codes€in€a€way€which€does€not€conflict€with€the€operating€system's€conditionÏcodes.€€I€wanted€to€define€the€status€values€in€such€a€way€that€they€do€not€conflict€with€possibleÏoperating€system€condition€codes.€€This€same€principle€is€also€the€reason€for€deferring€to€the€operatingÏsystem's€conventions€and€usages€for€the€other€issues,€such€as€the€order€of€command€line€arguments€andÏthe€definition€of€command€argument€delimiters.ÌÌQ:ñmñà0 Ü àñmññnñà Ü àñnñWhy€is€it€necessary€to€define€the€terms€"operating€system",€"command€line",€and€"command€lineÐ l È Ðtail"?ÌÌA:ñkñà0 Ü àñkññlñà Ü àñlñHigh€quality€standards€work€requires€clear,€well„defined€terms.€€In€general€technical€usage,€theseÐ Ð ,  Ðterms€are€well€defined€and€well€understood.€€Since€we€are€developing€features€that€interact€closely€withÏthe€operating€system,€it€makes€sense€to€use€the€definitions€which€already€exist.ÌÌQ:à Ü àWhy€did€you€choose€the€argument€names€that€you€did?€€Aren't€these€names€a€throwback€to€theÐ \  Ðancient€òòFortranóó€66€practice€of€implicit€data€typing€by€the€first€letter€of€the€name?Ð Ì(  ÐÌA:à Ü àThe€choice€of€argument€names€was€not€intended€to€state€or€imply€any€support€for€implicit€dataÐ dÀ  Ðtyping.€€To€the€contrary,€the€choice€of€argument€names€was€inspired€by€Hungarian€notation,€a€namingÏconvention€for€data€objects€originated€by€Charles€¢Simonyi£.€€Although€it€is€used€much€more€frequentlyÏin€the€C€programming€language€rather€than€in€Fortran,€Hungarian€notation€is€¢naiming£€methodologyÏwhich€is€applicable€to€any€modern€programming€language.ÌÌQ:à Ü àDue€to€differences€in€how€different€operating€systems€define€their€user€interfaces,€isn't€this€featureÐ ,ˆ Ðlikely€to€work€so€differently€from€one€operating€system€to€another€that€it€will€be€fairly€useless?ÌÌA:à Ü àObviously,€due€to€differences€between€operating€systems,€a€100%€solution€is€not€possible.€€RefusingÐ ì Ðto€develop€this€feature€means€that€the€decision€maker€is€insisting€on€a€0%€solution.€€There€are€99€otherÏpercentage€points€between€0%€and€100%.€€I€firmly€believe€that€an€80%€or€90%€solution€is€good€enoughÏso€that€it€offers€substantial€benefit€to€the€application€developer.ÌÌQ:à Ü àMany€Graphical€User€Interfaces€(¢GUIs£)€do€not€have€a€traditional€command€line.€€Doesn't€the€lackÐ Œè Ðof€a€command€line€make€this€feature€useless€in€a€GUI€environment?ÌÌA:à Ü àNo.€€The€proposal€allows€an€implementor€substantial€freedom€to€adapt€this€feature€to€the€rules€andÐ ð L! Ðconventions€of€the€operating€system€and€environment.€€In€a€GUI,€any€information€which€is€associatedÏwith€the€program€at€startup€could€be€considered€to€be€part€of€the€program's€"command€line".€€InÏaddition,€many€GUI€environments,€such€as€the€variations€of€Microsoft€Windows,€still€offer€a€commandÏline€as€part€of€the€program's€startup€definition.ÌÌQ:à Ü àThis€feature€has€been€presented€and€rejected€many€times€before.€€Why€raise€it€again€when€it€hasÐ ¸%' Ðbeen€defeated€so€many€times?ÌÌA:à Ü àThere€are€several€reasons€to€bring€it€back€again.Ð (x!* Ðà Ü à1.à  àMost€importantly,€user€demand.€€Many€kinds€of€users€want€this€feature.€€On€¢comp.lang.fortran£,Ð è(D"+ Ðhardly€a€week€goes€by€that€a€user€asks€how€to€get€information€from€the€command€line.€€Each€new€userÏwho€asks€for€this€feature€is€another€request€that€X3J3€make€it€available.€€Members€of€the€US€CongressÏand€the€various€state€legislatures€have€a€rule€of€thumb€which€states€that€for€every€constituent€whoÏwrites€a€letter€on€a€particular€issue,€there€are€1000€others€who€feel€the€same€way€but€do€not€take€theÏtime€and€effort€to€write.€€Judging€by€the€number€of€unique€requests,€there€is€a€large€demand€for€thisÏâ âfeature.Ð °- '1 Ðà Ü à2.à  àC€and€C++€already€have€had€this€feature€for€many€years.€€It€is€no€secret€that€Fortran€has€veryÐ ¤ Ðâ âstrong€competition€from€C€and€C++.€€Ìà Ü à3.à  àAt€the€joint€WG5€/€X3J3€meeting€held€February€10-14,€1997,€the€straw€vote€on€Tuesday,Ð <˜ ÐFebruary€11€showed€29€Yes€votes€and€4€No€votes.€€This€shows€substantial€support€at€the€internationalÏlevel.ÌÌQ:à Ü àWhy€require€the€CHARACTER€arguments€to€be€of€any€kind€that€is€defined€on€the€processor?€€WhyÐ l È Ðnot€restrict€the€kind€of€the€CHARACTER€arguments€to€be€of€default€kind?ÌÌA:à Ü àThere€are€a€number€of€reasons€for€requiring€the€CHARACTER€arguments€to€be€of€any€kind€thatÐ Ð ,  Ðis€defined€on€the€processor.Ìà Ü à1.à  àThere€is€a€problem€with€the€definition€of€the€word€"default".€€As€used€in€the€standard€(and€asÐ hÄ  Ðconfirmed€by€experience)€the€word€"default"€is€used€in€two€very€different€ways:Ìà Ü àà  àa.à 4 àThat€kind€which€is€most€common€or€usual€in€the€problem€to€be€solved.Ð \  Ðà Ü àà  àb.à 4 àThat€kind€which€is€most€natural€for€the€particular€processor's€architecture.Ð Ì(  ÐThese€two€usages€need€not€be€the€same€on€a€particular€processor.€€That€many€Fortran€processors€haveÏa€compiler€option€which€allows€the€user€to€specify€the€default€kind€for€integers€and/or€reals€is€evidenceÏof€these€differing€usages.Ìà Ü à2.à  àRecently,€X3J3€and€WG5€received€a€mandate€from€the€ISO€that€all€future€language€standardsÐ üX Ðshall€have€adequate€support€for€porting€applications€from€one€culture€to€another€with€little€or€noÏchange€in€the€source€code.€€Although€some€persons€disagree,€I€firmly€believe€that€this€mandate€includesÏsupport€for€the€ISO€10646€character€set.€€ISO€10646€is€a€multi-octet,€unified€set€of€characters€whichÏincludes€all€of€the€world's€alphabets,€technical€symbols€for€all€major€professions,€and€the€major€¢CJK£Ï(Chinese-Japanese-Korean)€ideographs.€€It€appears€to€me€that€part€of€this€mandate€is€support€for€ISOÏ10646€characters€in€all€procedures€which€have€CHARACTER€arguments.Ìà Ü à3.à  àNot€all€users€are€Americans€or€use€the€Roman€alphabet.€Already€some€applications€and€usersÐ ì Ðuse€non-Roman€characters.€€This€is€especially€true€for€users€who€are€in€the€Far€East€or€who€use€theÏconventions€of€Far€Eastern€cultures.Ìà Ü à4.à  àIn€the€past,€X3J3€has€had€problems€with€certain€features€requiring€the€use€of€default€kinds€ofÐ ôP Ðdata€types.€€Certain€I/O€operations€require€default€kinds.€€Among€other€things,€this€places€limits€on€theÏsizes€and€numbers€of€records€if€the€default€kind€of€integer€is€32€bits€or€smaller.€€Another€example€is€theÏFortran€90€SYSTEM_CLOCK€subroutine.€€As€currently€defined,€all€three€of€its€arguments€require€theÏuse€of€default€integers.€€I€would€very€much€prefer€not€to€create€more€problems€like€these.ÌÌQ:à Ü àSome€previous€operating€systems€used€keyword€forms€of€command€line€arguments.€€Why€not€defineÐ ¼!" Ðthe€¢COMMAND_ARGUMENTS£€argument€as€a€data€structure€so€that€keyword€arguments€could€beÏused?ÌÌA:à Ü àLike€the€design€of€any€product,€from€Big€Macs€to€advanced€software€systems,€those€who€designÐ ì$H& Ðprogramming€language€features€have€to€go€where€the€market€is.€€I€have€to€design€for€the€future,€notÏthe€past.€€The€target€time€frame€for€Fortran€2000€is€the€years€2001€-€2012.€€Which€operating€systemsÏare€likely€to€have€Fortran€2000€compilers€in€the€year€2001€and€beyond?€€These€are€likely€to€be€the€sameÏ¢OSes£€which€already€have€or€soon€will€have€Fortran€90€compilers.€€According€to€my€interpretation€ofÏMichael€¢Metcalf£'s€"Fortran€90/95€Information",€current€¢OSes£€with€Fortran€90€compilers€are€¢MacOS£,ÏMS-DOS€(including€Windows€95),€Windows€NT,€¢OpenVMS£,€and€various€kinds€of€Unix.€€I€do€not€knowÏof€any€others.ÌÌQ:à Ü àOn€many€kinds€of€Unix€systems,€the€command€language€interpreter€(¢CLI£)€intercepts€and€€parsesÐ ,t%/ Ðthe€command€line€and€expands€what€it€or€the€operating€system€consider€to€be€wild€card€characters,Ïeven€before€the€program€starts€execution€(often€called€¢globbing£).€€Thus,€the€executing€program€neverÏgets€to€see€the€¢unparsed£€command€line.€€Doesn't€this€behavior€make€this€feature€quite€useless?Ð |.Ø'2 ЇA:à Ü àNot€at€all€for€these€reasons:Ð ¤ Ðà Ü à1.à  àPortability€across€many€different€platforms€is€one€of€the€two€major€reasons€for€doing€this.€€EvenÐ pÌ Ðif€the€meaning€(semantics)€of€the€subroutines€is€not€exactly€the€same€in€each€operating€environment,Ïthe€implementations€are€likely€to€be€close€enough€so€that€the€subroutine€offers€value€to€the€applicationÏprogrammer.Ìà Ü à2.à  àThere€are€still€many€operating€systems,€such€as€DEC's€¢OpenVMS£,€Microsoft's€MS-DOS,€andÐ   ü ÐMicrosoft's€Windows€NT,€which€are€not€members€of€the€Unix€tribe.€€These€operating€systems€have€theirÏown€rules€and€behaviors.€€ÌÌQ:à Ü àOn€Unix€systems€with€OS-level€or€¢CLI£€¢globbing£,€how€would€an€implementor€properly€interpretÐ Ð ,  Ðwhat€the€¢COMMAND_LINE£€argument€should€return€to€the€user?ÌÌA:à Ü àIf€the€OS€or€¢CLI£€has€mandatory€¢globbing£,€there€are€several€possible€solutions,€any€of€which€couldÐ 4  Ðbe€standard€conforming:Ìà Ü à1.à  àReturn€all€blanks€in€¢COMMAND_LINE£,€since€the€behavior€of€the€OS€or€¢CLI£€makes€theÐ Ì(  Тunparsed£€command€line€unavailable.Ìà Ü à2.à  àConcatenate€all€of€the€parsed€command€line€arguments€into€one€long€character€string€and€makeÐ dÀ  Ðthis€concatenated€string€the€returned€value€of€¢COMMAND_LINE£.Ìà Ü à3.à  àIf€possible,€use€other€facilities€of€the€operating€system€to€find€out€what€the€user€really€passedÐ üX Ðinto€the€OS€or€¢CLI£.ÌÌò òReference€Listó óÐ `¼ Ðà0 Ü àà ° àMcConnell,€Steven€C.€€1993.€€òòCode€Complete:€€A€Practical€Handbook€of€Software€Construction.€óóÐ 0Œ ÐRedmond,€WA:€€Microsoft€Press.Ð Ü(#Ü(# Ðà0 Ü àà ° àMiller,€G.€A.€€1956.€€"The€Magical€Number€Seven,€Plus€or€Minus€Two:€€Some€Limits€on€Our€CapacityÏfor€Processing€Information.",€€òòThe€Psychological€Reviewóó€63,€no.€2€(March):81-97.ИôÜ(#Ü(# ÐX3J3€/€97-151,€Command€Line€Arguments€&€Environment€Variables€-€Everything„at„Once€ProposalÌÌ[End€of€¢J3£€/€€97-152]Ì