.TITLE UPCASE .IDENT /V01/ .SBTTL DESCRIPTION ; ; ; COMPONENT: UPCASE ; ; DATE: 30-MAY-79 ; ; AUTHOR: GR JOHNSON ; BATTELLE NORTHWEST ; P O BOX 999 ; RICHLAND WA 99352 ; ; SOURCE: MACRO-11 ; ; CALLER: FORTRAN IV-PLUS ; ; CALLING SEQUENCE: ; ; CALL UPCASE(STRING,[NCHR]) ; ; STRING = VARIABLE OR ARRAY CONTAINING STRING TO BE CONVERTED. ; ; NCHR = OPTIONAL ARGUMENT SPECIFYING NUMBER OF CHARACTERS ; TO SCAN DURING CONVERSION. IF THE ARGUMENT IS NOT ; SUPPLIED THE STRING IS SCANNED UNTIL AN ASCII NULL ; CHARACTER IS ENCOUNTERED. ; ; ; DESCRIPTION: ; ; "UPCASE" SCANS AN ASCII STRING, CONVERTING ALL LOWER CASE CHARACTERS ; TO UPPER CASE. THE SCAN WILL CONTINUE UNTIL ENCOUNTERING AN ASCII NULL ; CHARACTER, OR UNTIL THE OPTIONAL CHARACTER COUNT IS EXHAUSTED. ; ; .SBTTL ENTRY POINT -- CONVERT ASCII LOWER CASE TO UPPER CASE ; ; .PSECT ; ; UPCASE:: ; ; CLR R0 ; CLEAR CHARACTER COUNT CLR R1 ; CLEAR MAXIMUM CHARACTER COUNT MOV 2(R5),R2 ; ADDRESS OF STRING TO R2 CMPB #2,(R5) ; AT LEAST TWO ARGUMENTS? BNE 2$ ; NO, GO CONVERT TST 4(R5) ; NULL ARGUMENT? BEQ 2$ ; YES, GO CONVERT MOV @4(R5),R1 ; NCHR TO R1 ; 2$: CMPB #141,(R2) ; LESS THAN LOWER CASE "A"? BGT 4$ ; YES, CONTINUE TO SCAN CMPB #172,(R2) ; GREATER THAN LOWER CASE "Z"? BLT 4$ ; YES, CONTINUE TO SCAN BICB #040,(R2) ; CONVERT TO UPPER CASE 4$: TSTB (R2)+ ; END-OF-STRING? BEQ 6$ ; YES, RETURN INC R0 ; INCREMENT CHARACTER COUNT CMP R0,R1 ; NCHR CHARACTERS SCANNED? BNE 2$ ; NO, CONTINUE TO SCAN ; 6$: RTS PC ; RETURN TO CALLER (R0 = NCHR) .END ;