home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / CROSSASM / ASM370.ZIP / DEMOSRC.ALC < prev    next >
Encoding:
Text File  |  1985-06-15  |  6.7 KB  |  252 lines

  1.          TITLE 'DEMOSRC - DEMOSRC PROGRAM ANALYSIS'
  2. *
  3. * AUTHOR.    DON HIGGINS.
  4. * DATE.      03/30/85.
  5. * REMARKS.   PC/370 DEMO PROGRAM TO READ SELECTED SOURCE TEXT FILES
  6. *            AND PRINT REPORT WITH COUNT OF RECORDS AND COMMENTS.
  7. *
  8. * INPUT
  9. *
  10. *  1.  DEMOSRC DRIVE:PREFIX.SUFFIX
  11. *
  12. * OUTPUT
  13. *
  14. *  1.  CONSOLE LISTING OF DEMOSRC FILE NAMES AND
  15. *      COUNT OF LINES OF CODE IN EACH ONE.
  16. *
  17. *
  18. DEMOSRC   CSECT
  19.          LR    R13,R15
  20.          USING DEMOSRC,R13
  21.          LA    R2,=C'DEMOSRC PROGRAM ANALYSIS$'
  22.          SVC   WTO
  23.          LA    R2,=C' $'
  24.          SVC   WTO
  25.          BAL   R14,GETPARM
  26.          LTR   R15,R15
  27.          BNZ   EOJ
  28.          BAL   R14,GETLIST
  29.          LTR   R15,R15
  30.          BNZ   EOJ
  31.          BAL   R14,PROCLIST
  32. EOJ      EQU   *
  33.          SVC   EXIT
  34.          TITLE  'GETPARM - MOVE PARM TO DCB'
  35. GETPARM  EQU   *
  36.          LA    R2,SYSUT1
  37.          USING IHADCB,R2
  38.          MVC   DDUNIT,TFCB+(DDUNIT-IHADCB)
  39.          MVC   DDNAME,TFCB+(DDNAME-IHADCB)
  40.          MVC   DDTYPE,TFCB+(DDTYPE-IHADCB)
  41.          DROP  R2
  42.          SR    R15,R15
  43.          BR    R14
  44.          TITLE 'GETLIST - BUILD LIST OF SORTED FILES FROM DIRECTORY'
  45. GETLIST  EQU   *
  46.          LA    R2,TBUFF
  47.          SVC   SETDMA
  48.          LA    R2,SYSUT1
  49.          SR    R0,R0
  50.          SVC   FNDDIR  FIND FIRST DIRECTORY ENTRY
  51.          CLM   R0,1,=X'FF'
  52.          BE    NOFILES
  53. BLDLIST  EQU   *
  54.          LA    R3,TBUFF
  55.          SLL   R0,5  R0=32*OFFSET
  56.          AR    R3,R0           R3=DIRECTORY ENTRY
  57.          USING IHADCB,R3
  58.          LA    R1,LENTRY
  59.          SVC   GMAIN
  60.          CLM   R0,1,=X'00'
  61.          BNE   MEMERR
  62.          USING ENTRY,R2
  63.          MVC   ENAME,DDNAME
  64.          MVC   ETYPE,DDTYPE
  65.          DROP  R3
  66.          LA    R1,LISTPTR      R1 = LAST ENTRY
  67. INSERT   EQU   *
  68.          L     R3,ELINK-ENTRY(R1) R3 = NEXT ENTRY
  69.          LTR   R3,R3
  70.          BZ    ADDNOW
  71.          CLC   ENAME,ENAME-ENTRY(R3)
  72.          BL    ADDNOW
  73.          LR    R1,R3
  74.          B     INSERT
  75. ADDNOW   EQU   *
  76.          ST    R2,ELINK-ENTRY(R1)  CHAIN CURRENT TO PREV.
  77.          ST    R3,ELINK            CHAIN NEXT    TO CURRENT
  78. NEXTFILE EQU   *
  79.          DROP  R2,R3
  80.          LA    R2,SYSUT1
  81.          SR    R0,R0
  82.          SVC   NXTDIR  GET NEXT MATCHING DIRECTORY
  83.          CLM   R0,1,=X'FF'
  84.          BNE   BLDLIST
  85.          SR    R15,R15
  86.          BR    R14  EXIT NORMALLY TO PROCESS LIST
  87. MEMERR   EQU   *
  88.          LA    R2,=C'OUT OF MEMORY$'
  89.          SVC   WTO
  90.          SVC   TRACE
  91.          DC    C'BUG'
  92.          SVC   EXIT
  93. NOFILES  EQU   *
  94.          LA    R2,=C'NO MATCHING FILES$'
  95.          SVC   WTO
  96.          LA    R15,16
  97.          BR    R14
  98.          TITLE 'PROCLIST - PROCESS EACH DEMOSRC FILE IN LIST'
  99. PROCLIST EQU   *
  100.          LA    R3,LISTPTR
  101. NEXTLIST EQU   *
  102.          L     R3,0(R3)
  103.          LTR   R3,R3
  104.          BZ    PLEXIT
  105.          USING ENTRY,R3
  106.          LA    R2,SYSUT1
  107.          USING IHADCB,R2
  108.          MVC   DDNAME,ENAME
  109.          MVC   DDTYPE,ETYPE
  110.          LA    R1,DDNAME
  111.          LA    R2,L'DDNAME+L'DDTYPE
  112.          SVC   ASCEBC  CONVERT TO EBCDIC FOR MMS/370 OPEN
  113.          LA    R2,SYSUT1
  114.          SVC   OPEN
  115.          ZAP   PCOUNT,=P'0'
  116.          ZAP   PCOMM,=P'0'
  117. NEXTREC  EQU   *
  118.          LA    R2,SYSUT1
  119.          LA    R1,RECORD
  120.          SVC   GET
  121.          AP    PCOUNT,=P'1'
  122.          LA    R1,RECORD
  123. SKPN     EQU   *
  124.          TM    0(R1),X'80'
  125.          BZ    SKPOK
  126.          LA    R1,1(R1)
  127.          B     SKPN
  128. SKPOK    EQU   *
  129.          CLI   0(R1),ASCASK
  130.          BE    COMM
  131.          CLI   0(R1),ASCSMI
  132.          BE    COMM
  133.          B     NEXTREC
  134. COMM     EQU   *
  135.          AP    PCOMM,=P'1'
  136.          B     NEXTREC
  137. EOF      EQU   *
  138.          LA    R2,SYSUT1
  139.          SVC   CLOSE
  140.          MVC   DNAME,DDNAME
  141.          MVC   DTYPE,DDTYPE
  142.          MVC   DCOUNT,MASK
  143.          ED    DCOUNT,PCOUNT
  144.          MVC   DCOMM,MASK
  145.          ED    DCOMM,PCOMM
  146.          LA    R2,TMSG
  147.          SVC   WTO
  148.          AP    PTOTAL,PCOUNT
  149.          AP    PTCOMM,PCOMM
  150.          B     NEXTLIST
  151. PLEXIT   EQU   *
  152.          MVC   DNAME(12),=CL12'TOTAL'
  153.          MVC   DCOUNT,MASK
  154.          ED    DCOUNT,PTOTAL
  155.          MVC   DCOMM,MASK
  156.          ED    DCOMM,PTCOMM
  157.          LA    R2,TMSG
  158.          SVC   WTO
  159.          SR    R15,R15
  160.          BR    R14
  161. SYN      EQU   *
  162.          LA    R2,=C'IO ERROR$'
  163.          SVC   WTO
  164.          SVC   TRACE
  165.          DC    C'BUG'
  166.          LTORG
  167. *
  168. * REGISTER USAGE
  169. *
  170. R0       EQU   0 SVC RETURN CODE
  171. R1       EQU   1 SVC ARGUMENT
  172. R2       EQU   2 SVC ARGUMENT (DCB ADDRESS, DMA, MSG, ETC.)
  173. R3       EQU   3 DIRECTORY ADDRESS (TBUFF + OFFSET)
  174. R13      EQU   13 BASE
  175. R14      EQU   14 LINK FROM MAINLINE TO ROUTINES
  176. R15      EQU   15 RETURN CODE FROM ROUTINES
  177. *
  178. * PC/370 SVC'S
  179. *
  180. EXIT     EQU   0
  181. OPEN     EQU   1
  182. CLOSE    EQU   2
  183. GET      EQU   5
  184. PUT      EQU   6
  185. TRACE    EQU   9
  186. GMAIN    EQU   10
  187. FMAIN    EQU   11
  188. ASCEBC   EQU   12
  189. WTO      EQU   209
  190. SETDMA   EQU   226
  191. FNDDIR   EQU   217
  192. NXTDIR   EQU   218
  193. *
  194. * DATA AREAS
  195. *
  196. TFCB     EQU   X'5C' FCB BUILT BY CP/M FROM COMMAND
  197. TBUFF    EQU   X'80'  BUFFER FOR DIRECTORY SEARCH
  198. LISTPTR  DC    A(0) POINTER TO LIST OF FILE ENTRIES SELECTED
  199. RECORD   DS    XL256   LOGICAL RECORD AREA
  200. ASCASK   EQU   X'2A'   ASCII ASTERISK FOR ALC COMMENT CHECK
  201. ASCSMI   EQU   X'3B'   ASCII SIMICOLON FOR MAC COMMENT CHECK
  202. PCOUNT   DC    PL3'0'  FILE RECORD COUNT
  203. PCOMM    DC    PL3'0'  FILE COMMENT COUNT
  204. PTOTAL   DC    PL3'0'  TOTAL RECORD COUNT
  205. PTCOMM   DC    PL3'0'  TOTAL COMMENT COUNT
  206. TMSG     DC    C' '
  207. DNAME    DC    CL8' ',C'.'
  208. DTYPE    DC    CL3' ',C'  RECORDS='
  209. DCOUNT   DC    CL6' ',C'  COMMENTS='
  210. DCOMM    DC    CL6' '
  211.          DC    AL1(EBCCR,EBCLF),C'$'
  212. MASK     DC    X'402020202020'  EDIT MASK FOR PL3
  213. EBCCR    EQU   X'0D'   EBCDIC CARRIAGE RETURN
  214. EBCLF    EQU   X'0A'   EBCDIC LINE FEED
  215. SYSUT1   DS    0XL59
  216.          DC    X'00',CL8' ',CL3' '
  217.          DC    HL2'0',HL2'128'    CURBLK, LRECL FOR MSDOS
  218.          DC    XL16'00',X'00',XL4'00' RESV.,EXT RCD #, BLKPTR
  219.          DC    C'GT'
  220.          DC    HL2'255,2048'
  221.          DC    AL2(EOF,SYN)
  222.          DC    XL8'00',X'0A',X'1A',X'00',C'S'
  223. *
  224. * DSECTS
  225. *
  226. IHADCB   DSECT
  227. DDUNIT   DS    X
  228. DDNAME   DS    CL8
  229. DDTYPE   DS    CL3
  230.          DS    XL21
  231. BLKPTR   DS    XL4
  232. MACRF    DS    C
  233. RECFM    DS    C
  234. LRECL    DS    HL2
  235. BLKSZ    DS    HL2
  236. EODAD    DS    AL2
  237. SYNAD    DS    AL2
  238.          DS    XL8
  239. DCBEOR   DS    X
  240. DCBEOF   DS    X
  241.          DS    X
  242. DSORG    DS    C
  243. *
  244. * DUMMY SECTION FOR DYNAMICALLY BUILT LINKED LIST OF SORTED FILES
  245. *
  246. ENTRY    DSECT
  247. ELINK    DS    A     POINTER TO NEXT BLOCK
  248. ENAME    DS    CL8   FILE NAME
  249. ETYPE    DS    CL3   SUFFIX
  250. LENTRY   EQU   *-ENTRY
  251.          END   DEMOSRC
  252.