1.22k likes | 1.39k Views
E N D
1. ANDY OSWALD, NHMCCD
ROSENDO GARCIA, UTB-TSC
ALAN LYTLE, TEMPLE COLLEGE
CHUCK EVERETT, ODESSA COLLEGE
JIM MATHEWS, NHMCCD
DOUG MENEKE, ALVIN COLLEGE
This session is so secret that this document available on
http://faculty.nhmccd.edu/aoswald/datatel
2. ANDY OSWALDandy@nhmccd.edu
3. NHMCCD Environment IBM 9117-570
AIX 4.3.3
UniData 6.1.11
Colleague R17
DMI 3.8
Webadvisor 3.x
4. Andy’s Secret WA MTXT Workaround. The problem: WebAdvisor Miscellaneous Text is decided on and controlled by the NHMCCD Web Team.
Since going to WA 3.x, they mod in DEV, IT moves to TEST for approval then IT moves to LIVE.
If they want several changes in a week – or has happened, in a day (ack!) then IT is spending way too much time on this.
Limited space for information, would like to provide additional information immediately.
5. Andy’s Secret WA MTXT Workaround. The solution: Instead of changing the misc texts on the screen, instead create an image with a static hyperlink in the misc text.
The image is stored outside of Colleague and can be changed by the Web Team whenever they choose.
Clicking the “Misc Text” image sends them to another page that contains more information and is also controlled by the Web Team
6. Andy’s Secret WA MTXT Workaround. Background: So what does the announcements MTXT look like at other colleges on 3.x??
7. Andy’s Secret WA MTXT Workaround. Implementation: What we want the WAMAIN and Announcements MTXT to look like: http://myrecords.nhmccd.edu
8. Andy’s Secret WA MTXT Workaround. Implementation: SMD3 screen for WBMAIN:
9. Andy’s Secret WA MTXT Workaround. Implementation: New MISC TEXT:
This is now a static image location.
10. Andy’s Secret WA MTXT Workaround. Implementation: The alternative text if one hovers over the Announcement:
I am not sure why it looks that way…
11. Andy’s Secret WA MTXT Workaround. Implementation: And clicking on it sends you to:
12. Andy’s Secret WA MTXT Workaround. Closing thoughts: Since the web team is using GIFs rather than JPGs, then the WA screens could even include animations!
As the web team decides that the information needs to be changed, then we are using this as the opportunity to switch them over one at a time. So far we have 3 with the GIF + hyperlink.
13. Andy’s (with help from others) GSEARCHESEARCH is a really terrific tool.But what if you are not sure where to look?Use GSEARCH!
14. Andy’s GSEARCH - Intro and Disclaimer: * * * GSEARCH * * *Use gsearch to look for a string in code related files in UT, XUT, CORE, XCOR, CF, XCF, HR, XHR, ST and XST.It will look in source, subroutines, inserts, menus, valcodesand help for all these accounts. It will also look for fltt tables,misc text, rules, voc, voclib, research voclib and moveinfo.You may manually enter a search string or you may put severalsearch strings into a savedlist and process the entire savedlistat one time.You also have the option of searching UT, CORE, CF, HR and STappl data files. Or nearly everything.The last time the list of files was updated was 2/25/07BEWARE: gsearch can take a while to process depending onyour choices. It can also generate numerous BIG savedlists!!!Like hot sauce, use with caution until acclimated.
15. Andy’s GSEARCH – Where to search?Do you want to search in ... (answer Y or N - or leave blank for N)>>> Source, Subroutines and Inserts ?Y>>> WebAdvisor (WBS,WIS and WRC) files ?N>>> appl.PRCS.CTL, appl.PRCS.DEF and appl.PRCS.GEN ?N>>> Menus, Errors, Miscellaneous Text, Help and Rules ?N>>> Voc, Voclib, and Research Voclib ?N>>> Moveinfo and Express Load files ?N>>> UT, CORE, CF, HR and ST CDDs and RT Fields ?N>>> Valcode Tables and ELF Translate Tables ?N>>> UT Appl Data Files ?N>>> CORE Appl Data Files ?N>>> CF Appl Data Files ?N>>> HR Appl Data Files ?N>>> ST Appl Data Files ?N
16. Andy’s GSEARCH – What to search for and what to do then?Search for a single string. You may use upper case,lower case, mixed case, spaces, symbols,but do not use wildcards, such as '...'If you are using a savedlist containing the search strings thenenter GET.LIST, a space and the savedlist name.*******************************************************************What do you want to search for ?AOSWALDDo you want to have the output sent to the screen -this can require pressing 'enter' many times (Y/N) ?YDisplay what file is being searched (Y/N) ?NDisplay files that could not be opened (Y/N) ?NDo you want to have savedlists created (Y/N) ?YWhat are your initials ?AAO ? ONLY IF Y TO SAVEDLISTS!
17. Andy’s GSEARCH – Are you sure?*************************************************You are about to search through 30 files.*************************************************Is this what you want (Y/N) ? Y
18. Andy’s GSEARCH – Results! (edited for space)STRING FILE RECORDAOSWALD| found in |UT.SOURCE| --> |I_UTF600NH.INIAOSWALD| found in |UT.SOURCE| --> |UTF600NHAOSWALD| found in |XUT.SOURCE| --> |I_UTF600NH.INIAOSWALD| found in |XUT.SOURCE| --> |UTF600NHAOSWALD| found in |CORE.SOURCE| --> |I_ELF.TRANSLATE.TABLESAOSWALD| found in |CORE.SOURCE| --> |I_LOCATION.REGIONSAOSWALD| found in |CORE.SOURCE| --> |I_LOGIN.REQUESTSAOSWALD| found in |CORE.SOURCE| --> |I_OPEN.LOCATION.REGIONSAOSWALD| found in |CORE.SOURCE| --> |I_OPEN.ZIP.CODE.XLATAOSWALD| found in |CORE.SOURCE| --> |DMB016AOSWALD| found in |CORE.SOURCE| --> |I_FOREIGN.PERSONAOSWALD| found in |CORE.SOURCE| --> |I_OPEN.FOREIGN.PERSONAOSWALD| found in |CORE.SOURCE| --> |I_DMB016.INIAOSWALD| found in |CORE.SOURCE| --> |CC.ADD.USERS.NHNote that the pipe is used as a delimiter for use with Excel, etc. . . .
19. Andy’s GSEARCH – Results! (edited for space) . . .AOSWALD| found in |XST.INSERTS| --> |CDR570NHAOSWALD| found in |XST.INSERTS| --> |I_WSEP.REQ.CHECKAOSWALD| found in |XST.INSERTS| --> |CDR580NHAOSWALD| found in |XST.INSERTS| --> |I_PRCS.END.BCRF11AOSWALD| found in |XST.INSERTS| --> |I_FLD.EXIT.FORMAT.WORKSHEET.DATAAOSWALD| found in |XST.INSERTS| --> |I_OUTPUT.PROG.CATALOGGsearch is done.Your string was found in 822 records.You may now look for your savedlists by copying in the query below:SSELECT SAVEDLISTS WITH @ID LIKE GSEARCH.AAO...AE SAVEDLISTS or your preferred method of browsing results.Remember that the results in your savedlist are unsorted, soyou may want to $SORT your savedlists as you are browsing.
20. Andy’s GSEARCH – Results! (edited for space) . . .SORT SAVEDLISTS 11:05:34 Jun 01 2007 1SAVEDLISTS...................... GSEARCH.AAO_AOSWALD_CF.INSERTSGSEARCH.AAO_AOSWALD_CF.SOURCEGSEARCH.AAO_AOSWALD_CF.SUBROUTINESGSEARCH.AAO_AOSWALD_CORE.INSERTSGSEARCH.AAO_AOSWALD_CORE.SOURCEGSEARCH.AAO_AOSWALD_CORE.SUBROUTINESGSEARCH.AAO_AOSWALD_HR.INSERTSGSEARCH.AAO_AOSWALD_HR.SOURCEGSEARCH.AAO_AOSWALD_HR.SUBROUTINESGSEARCH.AAO_AOSWALD_ST.INSERTSGSEARCH.AAO_AOSWALD_ST.SOURCEGSEARCH.AAO_AOSWALD_ST.SUBROUTINESGSEARCH.AAO_AOSWALD_UT.INSERTSGSEARCH.AAO_AOSWALD_UT.SOURCEGSEARCH.AAO_AOSWALD_UT.SUBROUTINES
21. QUESTIONS?
andy@nhmccd.edu
22. DOUG MENEKEdmeneke@alvincollege.edu
23. Alvin College Environment HP rp5470
Unix 11i
UniData 6.1
Colleague R17
DMI 3.8
Webadvisor 3.x
24. XDM.DEL – Doug Meneke *Description:
An Envision DELETE utility.
*Syntax:
XDM.DEL filename
Must have an active savedlist
Obsolete with native indexing
25. FIND.EMPTY – Doug Meneke *Description:
A utility to show what fields in a file are used.
*Syntax:
FIND.EMPTY [filename [SAMPLE x]]
*RFSPECS – RFSPECS.CREATING.APPL
AE RFSPECS STUDENTS
001: 12220.54157ý
002:
003:
004: ST
26. FIND.EMPTY – Doug Meneke *appl.FILE.SPECS - FILE.FIELDS
AE ST.FILE.SPECS STUDENTS
001:
.
.
010: STU.EXCHANGE.START.DATEýSTU.EXCHANGE.END.DATEý
STU.MISC1ýSTU.MISC2ýSTU.MISC3ýSTU.MISC4ýSTU.MISC5ý
STU.COUNSELORýSTU.SPECIAL.SERV.NEED.CODESýSTU.RESIDENCY.STATUSý
STU.HOUSING.ASSIGNMENTSýSTU.HOUSING.START.DATES
*appl.CDD – FIELD.PLACEMENT
AE ST.CDD STU.EXCHANGE.START.DATE
001: STUDENTS
002: 1
27. FIND.EMPTY – Doug Meneke FIND.EMPTY STUDENTS 10000
Selecting file...
10000 records selected to list 0.
Analyizing records...
1. STU.EXCHANGE.START.DATE
2. STU.EXCHANGE.END.DATE
3. STU.MISC1
4. STU.MISC2
5. STU.MISC3 232
6. STU.MISC4 36
7. STU.MISC5 112
8. STU.COUNSELOR
9. STU.SPECIAL.SERV.NEED.CODES
10. STU.RESIDENCY.STATUS 9920
11. STU.HOUSING.ASSIGNMENTS
12. STU.HOUSING.START.DATES
13. STU.HOME.LOCATION 9944
14. STU.HOME.LOCATION.START.DATE 3257
28. FIND.ST – Doug Meneke *Description:
A utility to find all the pieces of an Envision program/process.
*Syntax:
FIND.ST [application [string]]
*UT.VALCODES – ENVISION.FILES
29. FIND.ST – Doug Meneke FIND.ST ST XCDR054
ST.DOC...
XCDR054
ST.INSERTS...
XCDR054
ST.OBJ...
_XCDR054
ST.PRCS.CTL...
XCDR054
ST.PRCS.DEF...
XCDR054
ST.SOURCE...
I_XCDR054.INI
XCDR054
ST.VOC...
XCDR054
30. PACKAGE.SOURCE – Doug Meneke *Description:
Process to gather all the pieces of an Envision program/process for porting to another machine.
*Syntax:
PACKAGE.SOURCE [application [string]]
31. PACKAGE.SOURCE – Doug Meneke PACKAGE.SOURCE ST XCDR054
ST.DOC...
XCDR054
ST.INSERTS...
XCDR054
ST.OBJ...
_XCDR054
ST.PRCS.CTL...
XCDR054
ST.PRCS.DEF...
XCDR054
ST.SOURCE...
I_XCDR054.INI
XCDR054
ST.VOC...
XCDR054
32. PACKAGE.SOURCE – Doug Meneke Creates ONE record in the _HOLD_ file
AE HOLD ST!XCDR054
001: /*FILE*/ST.DOC
002: /*ITEM*/XCDR054
003: /*START*/
005:
006:
.
.
33. UNPACKAGE.SOURCE – Doug Meneke *Description:
Process to put all the pieces of an Envision program/process into another machine.
*Syntax:
UNPACKAGE.SOURCE name
*Example
UNPACKAGE.SOURCE ST!XCDR054
34. XCOPY.REGISTRY – Doug Meneke *Description:
Process to copy my LIVE WebAdvisor registry to my TEST account registry.
*Syntax:
XCOPY.REGISTRY
35. XCOPY.REGISTRY – Doug Meneke Copies the entire registry
Sets all student passwords to “x”
Sets all faculty passwords to “y”
Sets all employee passwords to “z”
Skips DMIADMIN, I.T. folks, and administrators
Password expiration turned off
36. XDM.CLEAN.FILES – Doug Meneke *Description:
Process to purge unnecessary or run-time data.
*Syntax:
XDM.CLEAN.FILES
37. XDM.CLEAN.FILES – Doug Meneke *Cleans the following files…
_HOLD_ _PH_
VOC SAVEDLISTS
Envision/run-time files TREG files
CALENDAR.SCHEDULES ELF files
WebAdvisor files Registration files
38. XDM.COPY.ACCT – Doug Meneke *Description:
Process to copy live data to test.
*Syntax:
XDM.COPY.ACCT
39. XDM.COPY.ACCT – Doug Meneke Copies the DATA tree only
Allows selected files to be NOT copied
Handles alias files (ie. PARENT)
Uses system level (Unix) commands
40. RECONCILE.PATCHES – Doug Meneke *Description:
Process to tell me what Envision programs/processes changed.
*Syntax:
RECONCILE.PATCHES
41. RECONCILE.PATCHES – Doug Meneke Compares all records in Xapplications to regular applications
Skips add/change dates
Skips add/change opers
Skips object code
Obsolete with R18
42. QUESTIONS?
dmeneke@alvincollege.edu
43. ALAN LYTLEaml@templejc.edu
44. Writing Report/Data to the User’s PC Harder than it looks
But not that Hard
45. Temple College Environment HP9000/3440
Unix 11.23 (11i)
Unidata 7.1.8 combined
R17 Envision 4.7.1
DMI 3.8
UI 1.5
WA 3.02
46. The Input Screen
47. How to get Started Not really that hard
Do once use over and over
48. Setting up the Work areas XL.OUT.PCFL = ""
X.PC.INP.DIR = ""
X.PC.INP.DIR = A.PC.DIR
X.PC.INP.FILE = "ENROLLMENT"
X.USE.TOPC = "Y"
IF X.PC.INP.DIR = "" THEN
X.USE.TOPC = "N"
END
49. Detail “Lines” records to output X.TEMP.PCFL := X.TERM4
X.TEMP.PCFL := ","
X.TEMP.PCFL := "Credits"
X.TEMP.PCFL := ","
X.TEMP.PCFL := "Contact"
XL.OUT.PCFL<1,-1> = X.TEMP.PCFL
50. Checking the PC Directory **********
BLD.PC.TXT:
**********
X.TEMP.DATE = FMT(OCONV(DATE(),SN.DATE2),"R#8")
X.TEMP.DATE = TRIM(X.TEMP.DATE,"/","A")
XL.TEMP.LIST = ""
X.CNT.TEMP = 0
X.NUM.TEMP = 0
X.PC.FILE = "ENROLLMENT"
* First make sure directory exists or create if does not
X.FND.DIR = 0
X.PC.DIR = X.PC.INP.DIR
CALL WIN.PCDIR(X.PC.DIR, X.FND.DIR)
IF X.FND.DIR = 0 THEN
CALL WIN.PCMKDIR(X.PC.DIR)
END
IF XL.OUT.PCFL<1,1> NE "" THEN
XL.TEMP.LIST = XL.OUT.PCFL
X.CNT.TEMP = 0
X.NUM.TEMP = DCOUNT(XL.OUT.PCFL,@VM)
X.PC.FILE = X.PC.INP.FILE
X.PC.FILE := X.TEMP.DATE
X.PC.FILE := ".txt"
GOSUB SET.PC.FILE
END
RETURN
51. Writing each “Line” record ***********
SET.PC.FILE:
***********
* Check if file exists if does delete if not create
X.PATH.FILE = X.PC.DIR:"\":X.PC.FILE
X.FND.FILE = 0
CALL WIN.PCFILE(X.PATH.FILE, X.FND.FILE)
IF X.FND.FILE NE 0 THEN
CALL WIN.PCDELETE(X.PATH.FILE)
END
CALL WIN.PCCREATE(X.PATH.FILE)
CALL WIN.PCOPEN("PCFILE",X.PATH.FILE,X.OK.OPEN)
IF X.OK.OPEN = 0 THEN
CALL WIN.PCCLOSE(X.PATH.FILE)
END
IF X.OK.OPEN = 1 THEN
FOR X.CNT.TEMP = 1 TO X.NUM.TEMP
IF XL.TEMP.LIST<1,X.CNT.TEMP> NE "" THEN
X.TEMP.DATA = XL.TEMP.LIST<1,X.CNT.TEMP>
X.TEMP.DATA := @FM
CALL WIN.PCWRITE("PCFILE",X.TEMP.DATA,"TEXT")
END
NEXT X.CNT.TEMP
CALL WIN.PCCLOSE("PCFILE")
* end x.ok.open of 1 (found file)
END
52. Wintegrate Programs WIN.PCDIR
WIN.PCMKDIR
WIN.PCFILE
WIN.PCCREATE
WIN.PCDELETE
WIN.PCOPEN
WIN.PCCLOSE
WIN.PCWRITE
53. QUESTIONS?
aml@templejc.edu
54. JIM MATHEWSjimm@nhmccd.edu
55. NHMCCD Environment IBM 9117-570
AIX 4.3.3
UniData 6.1.11
Colleague R17
DMI 3.8
Webadvisor 3.x
56. Jim’s secret CREATE.MOVEINFO.NH The problem: You have a patch in the TEST/INSTALL account that you want in LIVE but for whatever reason you can not do a patch load to LIVE
A single patch can contain thousands of items. You don’t want to enter those into the MDEF screen manually
57. Jim’s secret CREATE.MOVEINFO.NH The solution: RUN JM.BP CREATE.MOVEINFO.NH
Input Application
ST
Input Patch Number
C11703-19_ST_17014_U
Input New MDEF Name
JIMS.NEW.MDEF
58. JIMS.NEW.MDEF
59. JIMS.NEW.MDEF
60. Jim’s secret XMRG – MERGE.LIST Screen The problem: LIST.ALGEBRA is not user friendly
Colon Prompt goes away in R18
How will users manage their lists?
61. Jim’s secret The solution: XMRG – MERGE.LIST Screen
62. Jim’s secret The solution: XMRG – MERGE.LIST Screen
63. Jim’s secret ULL – Unix file Time/Size Listing The problem: When was this file updated or changed
Check the Nightly File Refresh
Time File was last updated by someone
Time Program was last changed
Are two versions of a file the same size
You need a quick easy way to see File Size and Timestamp info from Unidata
64. Jim’s secret ULL – Unix file Time/Size Listing The syntax:
65. Jim’s secret ULL – Unix file Time/Size Listing The output:
66. Jim’s secret ULL – Unix file Time/Size Listing The output:
67. Jim’s secret ULL – Unix file Time/Size Listing The Output:
68. Jim’s secret ULL – Unix file Time/Size Listing The output:
69. QUESTIONS?
jimm@nhmccd.edu
70. CHUCK EVERETTceverett@odessa.edu
71. *All programs are written for:
IBM RS6000 – 55A x 4
AIX 5.3 sl 5
Unidata 6.1.15
Envision 4.7.1.8
Colleague 17
DMI 3.6
WA 2.x / 3.x
72. DMISTAT – Chuck Everett *Description:
Show Status of DMIs, Slaves, Phantoms.
*Syntax:
DMISTAT
73. DMISTAT – Chuck Everett Looks for specific Phantoms
Looks for specific Listeners
Looks for active Slave processes
Display logging space used/available
Screenshot
74. DMISTAT – Chuck Everett
75. OC.DMI.STARTER – Chuck Everett *Description:
Check for “Is DMI running?”
Check for “Is there a runaway/hung Slave?”
*Syntax:
PHANTOM OC.DMI.STARTER
76. OC.DMI.STARTER – Chuck Everett Looks for DMI process, if not active, does a STARTDMI
Looks for hung/runaway Slave processes, if excessive time, does a “kill -15”
Looks for a match between real DMI pid and “dmilistener.pid” and resets if needed.
Sleeps for a specified timeperiod
Remember, Phantoms don’t take up a Unidata License Slot.
77. GEN.DMI.USERS – Chuck Everett *Description:
Generate new DMI Logins in batch or individual mode. Not Envision – Runs many times faster.
*Syntax:
GEN.DMI.USERS
78. GEN.DMI.USERS – Chuck Everett Can run from savedlists, or batch selects like students for a term or active employees, or can be run for individuals by ID.NO, SSN, NAME
Looks for presence of current Registry entry – optionally can reset password or not overwrite password
Uses Template records to create different types of profiles – student, faculty, staff
79. GEN.DMI.USERS – Chuck Everett Based on Datatel’s own S.JAVA… subroutines to read/write/encrypt data
Changes required for R18 when Registry moves but core program still works
Links into our internal LDAP programming
Screenshots
80. GEN.DMI.USERS – Chuck Everett
81. GEN.DMI.USERS – Chuck Everett
82. GEN.DMI.USERS – Chuck Everett
83. LU – Chuck Everett *Description:
Formatted, Sorted List Users with user status displayed
*Syntax:
LU
84. LU – Chuck Everett
85. OC.LOCKS – Chuck Everett *Description:
Formatted list.locks report.
*Syntax:
OC.LOCKS
86. OC.LOCKS – Chuck Everett Full data display – no trunctations
Browse-able
Screenshots
87. OC.LOCKS – Chuck Everett
88. KILL – Chuck Everett *Description:
Allows you to selectively kill user sessions.
*Syntax:
KILL
89. KILL – Chuck Everett Presents Operator a sorted list of users
Shows status of users
When user session is chosen, kills processes in reverse order
Uses kill -15 to gracefully kill UDT process
Failsafe prompt before killing
Uses “sudo” to kill as root to guarantee permission
90. KILL – Chuck Everett
91. QUESTIONS?
ceverett@odessa.edu
All programs available “as is”.
92. Rosendo GarciaRosendo.Garcia@utb.edu
93. R18 Putting DVF back to work and getting MGCC to cooperate DVF - Define Virtual Fields
MGCC - Migrating Computed Columns
94. All programs are written for:
RP8420 10 processors 32 gig memory
HPUX 11.i v1 (upgrading to v2 Nov 07)
Unidata 6.1.16 (upgrading 7.x Nov 07)
Envision 4.7.1.8.3
Colleague 17 - Colleague R18 July 23
DMI 3.8 DMI 4.x R18
WA 3.0.x
100. At this point it just added it to CORE.CDD
Create a savedlist since MGCC needs one to execute
Create a savedlist since MGCC needs one to execute
103. At this point a computed column had been created in DCC. It just needs to be run through the generator in DCC.
105. After generation, you will have a compiled Computed Column and a Virtual Field in the STAFF dictionary
106. :LIST STAFF T04.STAFF.OFFICE.CODES
STAFF..... Office Codes..................
0002357 ADM
0177428 NA-LIB
0121483 NA
0174614 ADM-FA-TO-NSR-ZADV-DOS-LIB
0000682 NA
0207712 NA
0205367 NA
0055086 NA
0231363 NA-ADM
0156792 NA
0064667 NA
0000950 NA-ADM-REG-FA-SEC-BUS-NSR-ZADV
107. What if we want to change an existing computed column?
First we need to clear the code in the computed column using DCC
110. What if we want to change an existing computed column?
Bring up T04.STAFF.OFFICE.CODES
in DVF
119. R18 – SHEL goes away? Really?
Well… someone posted a solution back in January:
[ID] Got SHEL ? (for R18)
"Clayton Burton" <Clayton.Burton@furman.edu> on 01/19 at 11:36 AM
Happy Friday everyone!
Assuming this hasn't already been posted at some point, here's a lovely post-Christmas gift for everyone. When we first installed R18 we noticed that SHEL still worked. And at some point it stopped working.
120.
“I think that some patches basically disable it. But in one of our other R18 accounts I pulled up SHEL in the Toolkit's BPO to see what it looked like with the idea of copying it via the PRMN screen. Turns out there was no need for a copy! SHEL is a one-line program. In your SHEL-less R18 account create a new Batch process (BGP). I named ours "XSHL". Then pull that new, blank process up in BPO and put this single line in the "Statements" area: CALL S.PERFORM.MODE
That's it! Add to an "ADMIN" security class and enjoy!
--Clayton
121. One line program works fine
Users will have access only in TEST for
a limited time while we finish up with the
converting of the paragraphs
122. Presentation available upon request
Rosendo.Garcia@utb.edu
Questions ?
123. ANDY OSWALD, NHMCCD
ROSENDO GARCIA, UTB-TSC
ALAN LYTLE, TEMPLE COLLEGE
CHUCK EVERETT, ODESSA COLLEGE
JIM MATHEWS, NHMCCD
DOUG MENEKE, ALVIN COLLEGE
This session is so secret that this document available on
http://faculty.nhmccd.edu/aoswald/datatel