home *** CD-ROM | disk | FTP | other *** search
- TITLE 'DEMOSRC - DEMOSRC PROGRAM ANALYSIS'
- *
- * AUTHOR. DON HIGGINS.
- * DATE. 03/30/85.
- * REMARKS. PC/370 DEMO PROGRAM TO READ SELECTED SOURCE TEXT FILES
- * AND PRINT REPORT WITH COUNT OF RECORDS AND COMMENTS.
- *
- * INPUT
- *
- * 1. DEMOSRC DRIVE:PREFIX.SUFFIX
- *
- * OUTPUT
- *
- * 1. CONSOLE LISTING OF DEMOSRC FILE NAMES AND
- * COUNT OF LINES OF CODE IN EACH ONE.
- *
- *
- DEMOSRC CSECT
- LR R13,R15
- USING DEMOSRC,R13
- LA R2,=C'DEMOSRC PROGRAM ANALYSIS$'
- SVC WTO
- LA R2,=C' $'
- SVC WTO
- BAL R14,GETPARM
- LTR R15,R15
- BNZ EOJ
- BAL R14,GETLIST
- LTR R15,R15
- BNZ EOJ
- BAL R14,PROCLIST
- EOJ EQU *
- SVC EXIT
- TITLE 'GETPARM - MOVE PARM TO DCB'
- GETPARM EQU *
- LA R2,SYSUT1
- USING IHADCB,R2
- MVC DDUNIT,TFCB+(DDUNIT-IHADCB)
- MVC DDNAME,TFCB+(DDNAME-IHADCB)
- MVC DDTYPE,TFCB+(DDTYPE-IHADCB)
- DROP R2
- SR R15,R15
- BR R14
- TITLE 'GETLIST - BUILD LIST OF SORTED FILES FROM DIRECTORY'
- GETLIST EQU *
- LA R2,TBUFF
- SVC SETDMA
- LA R2,SYSUT1
- SR R0,R0
- SVC FNDDIR FIND FIRST DIRECTORY ENTRY
- CLM R0,1,=X'FF'
- BE NOFILES
- BLDLIST EQU *
- LA R3,TBUFF
- SLL R0,5 R0=32*OFFSET
- AR R3,R0 R3=DIRECTORY ENTRY
- USING IHADCB,R3
- LA R1,LENTRY
- SVC GMAIN
- CLM R0,1,=X'00'
- BNE MEMERR
- USING ENTRY,R2
- MVC ENAME,DDNAME
- MVC ETYPE,DDTYPE
- DROP R3
- LA R1,LISTPTR R1 = LAST ENTRY
- INSERT EQU *
- L R3,ELINK-ENTRY(R1) R3 = NEXT ENTRY
- LTR R3,R3
- BZ ADDNOW
- CLC ENAME,ENAME-ENTRY(R3)
- BL ADDNOW
- LR R1,R3
- B INSERT
- ADDNOW EQU *
- ST R2,ELINK-ENTRY(R1) CHAIN CURRENT TO PREV.
- ST R3,ELINK CHAIN NEXT TO CURRENT
- NEXTFILE EQU *
- DROP R2,R3
- LA R2,SYSUT1
- SR R0,R0
- SVC NXTDIR GET NEXT MATCHING DIRECTORY
- CLM R0,1,=X'FF'
- BNE BLDLIST
- SR R15,R15
- BR R14 EXIT NORMALLY TO PROCESS LIST
- MEMERR EQU *
- LA R2,=C'OUT OF MEMORY$'
- SVC WTO
- SVC TRACE
- DC C'BUG'
- SVC EXIT
- NOFILES EQU *
- LA R2,=C'NO MATCHING FILES$'
- SVC WTO
- LA R15,16
- BR R14
- TITLE 'PROCLIST - PROCESS EACH DEMOSRC FILE IN LIST'
- PROCLIST EQU *
- LA R3,LISTPTR
- NEXTLIST EQU *
- L R3,0(R3)
- LTR R3,R3
- BZ PLEXIT
- USING ENTRY,R3
- LA R2,SYSUT1
- USING IHADCB,R2
- MVC DDNAME,ENAME
- MVC DDTYPE,ETYPE
- LA R1,DDNAME
- LA R2,L'DDNAME+L'DDTYPE
- SVC ASCEBC CONVERT TO EBCDIC FOR MMS/370 OPEN
- LA R2,SYSUT1
- SVC OPEN
- ZAP PCOUNT,=P'0'
- ZAP PCOMM,=P'0'
- NEXTREC EQU *
- LA R2,SYSUT1
- LA R1,RECORD
- SVC GET
- AP PCOUNT,=P'1'
- LA R1,RECORD
- SKPN EQU *
- TM 0(R1),X'80'
- BZ SKPOK
- LA R1,1(R1)
- B SKPN
- SKPOK EQU *
- CLI 0(R1),ASCASK
- BE COMM
- CLI 0(R1),ASCSMI
- BE COMM
- B NEXTREC
- COMM EQU *
- AP PCOMM,=P'1'
- B NEXTREC
- EOF EQU *
- LA R2,SYSUT1
- SVC CLOSE
- MVC DNAME,DDNAME
- MVC DTYPE,DDTYPE
- MVC DCOUNT,MASK
- ED DCOUNT,PCOUNT
- MVC DCOMM,MASK
- ED DCOMM,PCOMM
- LA R2,TMSG
- SVC WTO
- AP PTOTAL,PCOUNT
- AP PTCOMM,PCOMM
- B NEXTLIST
- PLEXIT EQU *
- MVC DNAME(12),=CL12'TOTAL'
- MVC DCOUNT,MASK
- ED DCOUNT,PTOTAL
- MVC DCOMM,MASK
- ED DCOMM,PTCOMM
- LA R2,TMSG
- SVC WTO
- SR R15,R15
- BR R14
- SYN EQU *
- LA R2,=C'IO ERROR$'
- SVC WTO
- SVC TRACE
- DC C'BUG'
- LTORG
- *
- * REGISTER USAGE
- *
- R0 EQU 0 SVC RETURN CODE
- R1 EQU 1 SVC ARGUMENT
- R2 EQU 2 SVC ARGUMENT (DCB ADDRESS, DMA, MSG, ETC.)
- R3 EQU 3 DIRECTORY ADDRESS (TBUFF + OFFSET)
- R13 EQU 13 BASE
- R14 EQU 14 LINK FROM MAINLINE TO ROUTINES
- R15 EQU 15 RETURN CODE FROM ROUTINES
- *
- * PC/370 SVC'S
- *
- EXIT EQU 0
- OPEN EQU 1
- CLOSE EQU 2
- GET EQU 5
- PUT EQU 6
- TRACE EQU 9
- GMAIN EQU 10
- FMAIN EQU 11
- ASCEBC EQU 12
- WTO EQU 209
- SETDMA EQU 226
- FNDDIR EQU 217
- NXTDIR EQU 218
- *
- * DATA AREAS
- *
- TFCB EQU X'5C' FCB BUILT BY CP/M FROM COMMAND
- TBUFF EQU X'80' BUFFER FOR DIRECTORY SEARCH
- LISTPTR DC A(0) POINTER TO LIST OF FILE ENTRIES SELECTED
- RECORD DS XL256 LOGICAL RECORD AREA
- ASCASK EQU X'2A' ASCII ASTERISK FOR ALC COMMENT CHECK
- ASCSMI EQU X'3B' ASCII SIMICOLON FOR MAC COMMENT CHECK
- PCOUNT DC PL3'0' FILE RECORD COUNT
- PCOMM DC PL3'0' FILE COMMENT COUNT
- PTOTAL DC PL3'0' TOTAL RECORD COUNT
- PTCOMM DC PL3'0' TOTAL COMMENT COUNT
- TMSG DC C' '
- DNAME DC CL8' ',C'.'
- DTYPE DC CL3' ',C' RECORDS='
- DCOUNT DC CL6' ',C' COMMENTS='
- DCOMM DC CL6' '
- DC AL1(EBCCR,EBCLF),C'$'
- MASK DC X'402020202020' EDIT MASK FOR PL3
- EBCCR EQU X'0D' EBCDIC CARRIAGE RETURN
- EBCLF EQU X'0A' EBCDIC LINE FEED
- SYSUT1 DS 0XL59
- DC X'00',CL8' ',CL3' '
- DC HL2'0',HL2'128' CURBLK, LRECL FOR MSDOS
- DC XL16'00',X'00',XL4'00' RESV.,EXT RCD #, BLKPTR
- DC C'GT'
- DC HL2'255,2048'
- DC AL2(EOF,SYN)
- DC XL8'00',X'0A',X'1A',X'00',C'S'
- *
- * DSECTS
- *
- IHADCB DSECT
- DDUNIT DS X
- DDNAME DS CL8
- DDTYPE DS CL3
- DS XL21
- BLKPTR DS XL4
- MACRF DS C
- RECFM DS C
- LRECL DS HL2
- BLKSZ DS HL2
- EODAD DS AL2
- SYNAD DS AL2
- DS XL8
- DCBEOR DS X
- DCBEOF DS X
- DS X
- DSORG DS C
- *
- * DUMMY SECTION FOR DYNAMICALLY BUILT LINKED LIST OF SORTED FILES
- *
- ENTRY DSECT
- ELINK DS A POINTER TO NEXT BLOCK
- ENAME DS CL8 FILE NAME
- ETYPE DS CL3 SUFFIX
- LENTRY EQU *-ENTRY
- END DEMOSRC