;+ DSTAT by Dan Dugan -- public domain2 "This program must be entered from DEDIT."  A-T  U-Z,F( ) depends on your printer ,,,,,,,,T,SKIPPARS,F,SEARC, ,,N,P,P,P,P,P,,,T,T,(),(),(), SEARCHWOR(),SEARCHFIEL(),SKIPWOR(),LOOKFIEL(),D(),,F  (  "File is empty."  $N.8 `  cs B L"DSTAT "V "Enter date: ",DAT.["Here are the numeric fields in ";`  show fields;j"Number of field to work on (or 0 to quit)";STATFo STATF 9t STATFN "FILE HAS"N"FIELDS" j'~ |((STATF),)"n" 5"Only numeric fields can be used; enter again."  j# STATF   abortD"Enter cue for missing data, if other than blank: ",MIS P  PRINT HEADING   X"DESCRIPTIVE STATISTICS FOR FILE "", FIELD "x((STATF),)" "DAT  RECORD WORK LOOP 0 zero variables here if go-around allowed' T T  <==== FOR ~  get rec= () "0 ";( );   ;( );T  save it SKIPPARS  !   parse record string  SEARC , SEARCH  SEARC Z( FIND (2 w(,SEARCHWOR()) <   parse F ,P LOOK FOR SKIPS Z4d SKIPWOR()""   try search then0n LOOKFIEL()   look in fieldFx w(T,SKIPWOR())   whole rec search - skip it  dS w((LOOKFIEL()),SKIPWOR())   field compare - skip  d: SEARCHWOR()""   don't care so print it!   now search9 SEARCHWOR()""   hesitate no longer* SEARCHFIEL()   field6 w(T,SEARCHWOR())   found it  A w((SEARCHFIEL()),SEARCHWOR())   & SKIPPARS   parse" MISSING DATA ,, (STATF)MIS   skip6 WORK ON RECORD ; B  exit@&((STATF))J P "(";;")";T"("")";^ P , h,0r N XMAXMI "| XMA XMA" XMI XMINNUUX X3=X2*X X4=X3*XUXUXX UX3=UX3+X3 UX4=UX4+X4& END OF RECORD WORK LOOP  B  % INTERMEDIATE VARIABLES U2UU"  N WU WUN  mean W2X=WX*WX ' mean^2& W3X=W2X*WX ' mean^30 W4X=W3X*WX ' mean^4 : CALCULATE OUTPUTS > "nx=";N@? N UXU2N ZSZS XEDZS!((UXU2N)(N))  standard deviation.NZSZS!(N)  standard errorX PRINT REPORT 1b"DESCRIPTIVE STATISTICS IN FILE '""'"l"Date: "DATfv MIS"" "Records with blank field have been skipped."  "Missing data cue '"MIS"'"y P t{ P MIS"" "Records with blank field have been skipped."  "Missing data cue: "MIS""Records from"T"to"T, P "Records from"T"to"T  SHOW SEARCH SET-UP  SEARC 4 SEARC /"Records containing '"SEARCHWOR()"'"9 P "Records containing '"SEARCHWOR()"'"  4"Subset selection:$ P "Subset selection:  SEARCHWOR()"" " Selection instructions:- P " Selection instructions: ) ();"FIELD NAME";()"EXPRESSION3 P ();"FIELD NAME";()"EXPRESSIONG ( );x((SEARCHFIEL()),);();SEARCHWOR()Q P ( );x((SEARCHFIEL()),);();SEARCHWOR()# SEARCHWOR()""    SKIPWOR()"" 4 " Rejection instructions:- P " Rejection instructions:* ();"FIELD NAME";();"EXPRESSION1 P ()"FIELD NAME"()"EXPRESSION C* ( );x((LOOKFIEL()),);();SKIPWOR()M/ P ( );x((LOOKFIEL()),);();SKIPWOR()1!2 SKIPWOR()"" * 4 C>"Statistics calculated for field '";x((STATF),);"'"JC P "Statistics calculated for field ";x((STATF),)H,"Number",N!M P ,"Number",NR,"Minimum",XMI"W P ,"Minimum",XMI\,"Maximum",XMA"a P ,"Maximum",XMAf,"Range",XMAXMI(k P ,"Range",XMAXMIp,"Sum",Uu P ,"Sum",Uz,"Mean",W P ,"Mean",W,"Standard Dev.",ZS' P ,"Standard Dev.",ZS,"Standard Err.",ZS' P ,"Standard Err.",ZS P F;0"Hit return to return to editor. ", FINISH ""Re-loading DEDIT program. D()"DEDIT"," (SUB) PARSE STRING &w(,(~))  delimiter  ()"" ()(,,) (,)  %  GENERAL ERROR ROUTINES $  .  8 0. "Division by zero error in line" 8 )B  (SUB) EXIT TEST (TERM DEP) L u () V ,`  (SUB) CLEAR SCREEN (TERM DEP) j ()"E"()"H";t )~  (SUB) GET RECORD "I" IN T$  ""  necessary! F  , & #,F  latter half x(,). #,F  whole or first half    (SUB) SHOW FIELDS    N, |((),) "n"   ();> "##";;". "x((),)" "|((),)  |((),) "n"   ();> "##";